Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 15, 2019 08:32:11

JJ39
Зарегистрирован: 2019-06-04
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Добавить данные в таблицу с помощью двух переменых

 cursor.execute("INSERT INTO" +table_name+ "VALUES"+a)
Начал с этого, но получаю ошибку.
 cursor.execute('INSERT INTO {}' + "VALUES {}".format(table_name, a))
Надеялся что заработает это, но так же ошибка.

Офлайн

#2 Июнь 15, 2019 09:59:58

rami
Зарегистрирован: 2018-01-08
Сообщения: 278
Репутация: +  71  -
Профиль   Отправить e-mail  

Добавить данные в таблицу с помощью двух переменых

У вас метод .format(table_name, a) относится только к строке “VALUES {}”, а 'INSERT INTO {}' оказывается как-то побоку.


Пробуйте так:

 c.execute("INSERT INTO {} VALUES{}".format(table_name, a))

Офлайн

#3 Июнь 15, 2019 10:42:15

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Добавить данные в таблицу с помощью двух переменых

Вообще не так надо делать, надо не самому формировать строку запроса, а использовать подстановку значений через спец символ ? или подобный.

 cursor.execute('INSERT INTO table_name VALUES (?,?,?)', (1,2,3))



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#4 Июнь 15, 2019 12:38:02

Egorro13
Зарегистрирован: 2019-04-16
Сообщения: 105
Репутация: +  5  -
Профиль  

Добавить данные в таблицу с помощью двух переменых

JJ39, для наглядности:

>>> table_name = ‘TableName’
>>> a = ‘values’
>>> “INSERT INTO” +table_name+ “VALUES”+a
'INSERT INTOTableNameVALUESvalues'
>>> ‘INSERT INTO {}’ + “VALUES {}”.format(table_name, a)
'INSERT INTO {}VALUES TableName'
rami, тоже вроде с тем же косяком:
>>> “INSERT INTO {} VALUES{}”.format(table_name, a)
'INSERT INTO TableName VALUESvalues'

Офлайн

#5 Июнь 15, 2019 13:52:01

rami
Зарегистрирован: 2018-01-08
Сообщения: 278
Репутация: +  71  -
Профиль   Отправить e-mail  

Добавить данные в таблицу с помощью двух переменых

Egorro13, a — должно быть списком или кортежем значений, а не строкой (если у строки число символов равно числу полей, то “порвёт” строку на символы, если не равно, будет ругаться).

JOHN_16 прав, нужно подставлять знаки ? в соответствии с числом полей таблицы, вставка напрямую небезопасна.

P.S. Я всегда вставляю данные с подстановкой, но в предыдущем ответе имел в виду как вставить данные в строку (а не в базу) с помощью .format()

Отредактировано rami (Июнь 15, 2019 13:58:43)

Офлайн

#6 Июнь 15, 2019 14:59:50

Egorro13
Зарегистрирован: 2019-04-16
Сообщения: 105
Репутация: +  5  -
Профиль  

Добавить данные в таблицу с помощью двух переменых

rami
Понял, я еще до SQL в Питоне не добирался - почему-то посчитал, что а - тоже в строчном формате

Офлайн

#7 Июнь 24, 2019 11:17:23

Rafik
Зарегистрирован: 2018-09-04
Сообщения: 231
Репутация: +  27  -
Профиль   Отправить e-mail  

Добавить данные в таблицу с помощью двух переменых

Вот это

JOHN_16
 cursor.execute('INSERT INTO table_name VALUES (?,?,?)', (1,2,3))
Предлагаю переделать вот так
 cursor.execute('INSERT INTO {} VALUES (?,?,?)'.format(table_name), (1,2,3))

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version