В приведенном ниже коде row
является кортежем из 200 элементов (цифр) и listOfVars
является кортежем из 200 строк, которые являются именами переменных в testTable
. tupleForm
- это список кортежей, 200 элементов в каждом кортеже.python sqlite question - Метод вставки
Следующий код не работает. Он возвращает синтаксическую ошибку:
for row in tupleForm:
cmd = '''INSERT INTO testTable listOfVars values row'''
cur.execute(cmd)
Однако нижеследующее работает нормально. Может кто-нибудь объяснить, почему? Я нахожу sqlite настолько неинтуитивным.
for row in tupleForm:
cmd = '''INSERT INTO testTable %s values %s'''%(listOfVars, row)
cur.execute(cmd)
Благодарим за помощь.
У вас есть стол с 200 колонками? Вероятно, для вас существует лучший дизайн базы данных. Например, попробуйте помещать то, что у вас есть в настоящее время, как и большинство имен столбцов, в собственный столбец. –
Это не ошибка SQLite! SQLite не имеет никакого способа узнать, что означает 'listOfVars' или' row' ... – rsenna
Попробуйте выполнить 'print (cmd)' после ваших 'cmd = ...' настроек, и вы увидите разницу в 2. Это не вопрос sqlite, это просто вопрос форматирования строки Python. Лучший способ выполнить то, что вы пытаетесь сделать, - это применить ответ Адама Бернье. – snapshoe