вставка данных в таблицу с помощью pyodbc - PullRequest
0 голосов
/ 08 мая 2019

я пытаюсь вставить данные, используя python (pyodbc), в мою базу данных, но я продолжаю получать ошибки, такие как пропущенная запятая и другие

Я пытался использовать переменную "linea" вместо всех значений, но не работает

for linea in nintendo:
        if(linea[0]!='id'):
            print(linea)
            cursor.execute("INSERT INTO Nintendo (juegoid,nombrejuego,generos,desarrolladores,publicadoras,fechapublicacion,exclusividad,ventasglobales,rating) VALUES (linea[0],linea[1],linea[2],linea[3],linea[4],linea[5],linea[6],linea[7],linea[8]);")
            print("data loaded")

это содержит "linea":

['1', '#Breakforcist Battle', 'Party', 'Lucid Sheep Games', 'Lucid Sheep Games', '12 апреля 2018 года', 'No', '', '']

Ответы [ 2 ]

0 голосов
/ 08 мая 2019

Как правило, в Python вы не можете интерполировать переменные, такие как значения списка напрямую внутри строки. Вы должны использовать какой-либо метод форматирования строки, включая % оператор по модулю (не рекомендуется использовать), str.format() или даже более новый F-string в 3.6 +.

В частности, в DB-API вы должны параметризировать запросы, в которых переменные связаны с заполнителями при вызове cursor.execute:

# PREPARED STATEMENT (NO DATA)
sql = """INSERT INTO Nintendo (juegoid, nombrejuego, generos, desarrolladores, publicadoras,
                              fechapublicacion, exclusividad, ventasglobales, rating)
         VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"""

# BIND PARAMS
cursor.execute(sql, params=linea[0:8])
conn.commit()

print("data loaded")
0 голосов
/ 08 мая 2019

Вы пропустили ключевое слово Значения

INSERT INTO Nintendo **Values** (juegoid,nombrejuego,generos,desarrolladores,publicadoras,fechapublicacion,exclusividad,ventasglobales,rating) VALUES (linea[0],linea[1],linea[2],linea[3],linea[4],linea[5],linea[6],linea[7],linea[8]);

Также вы должны зафиксировать данные с помощью cursor.commit

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...