Найти - Пользователи
Полная версия: Добавить данные в таблицу с помощью двух переменых
Начало » Базы данных » Добавить данные в таблицу с помощью двух переменых
1
JJ39
 cursor.execute("INSERT INTO" +table_name+ "VALUES"+a)
Начал с этого, но получаю ошибку.
 cursor.execute('INSERT INTO {}' + "VALUES {}".format(table_name, a))
Надеялся что заработает это, но так же ошибка.
rami
У вас метод .format(table_name, a) относится только к строке “VALUES {}”, а 'INSERT INTO {}' оказывается как-то побоку.


Пробуйте так:
 c.execute("INSERT INTO {} VALUES{}".format(table_name, a))
JOHN_16
Вообще не так надо делать, надо не самому формировать строку запроса, а использовать подстановку значений через спец символ ? или подобный.
 cursor.execute('INSERT INTO table_name VALUES (?,?,?)', (1,2,3))
Egorro13
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'
rami
Egorro13, a — должно быть списком или кортежем значений, а не строкой (если у строки число символов равно числу полей, то “порвёт” строку на символы, если не равно, будет ругаться).

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

P.S. Я всегда вставляю данные с подстановкой, но в предыдущем ответе имел в виду как вставить данные в строку (а не в базу) с помощью .format()
Egorro13
rami
Понял, я еще до SQL в Питоне не добирался - почему-то посчитал, что а - тоже в строчном формате
Rafik
Вот это
JOHN_16
 cursor.execute('INSERT INTO table_name VALUES (?,?,?)', (1,2,3))
Предлагаю переделать вот так
 cursor.execute('INSERT INTO {} VALUES (?,?,?)'.format(table_name), (1,2,3))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB