im试图使用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','April 12,2018','No','','']
答案 0 :(得分:0)
您错过了Values关键字
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提交数据
答案 1 :(得分:0)
通常在Python中,您不能在字符串内直接插入变量,例如列表值 。您必须使用某种类型的字符串格式化方法,包括%
取模运算符(不建议使用),str.format()
,甚至是3.6+版本中的更新的F-string
。
特别是在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")