我正在尝试使用Python将值插入Microsoft Access数据库。
我可以按如下所示插入值:
df = pd.read_excel(xlsx, sheets[0])
for i in range(1, len(sheets)):
data = []
data = pd.read_excel(xlsx, sheets[i])
df = df.append(data)
k = (df.iat[3,0])
conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ= \\.....\Stat_tracker.accdb;')
cursor = conn.cursor()
cursor.execute("INSERT INTO ABCD (Serial) VALUES ('xxxx')")
cursor.execute('select * from ABCD')
for row in cursor.fetchall():
print(row)
我想使用循环来遍历多个记录。有没有更好的办法?
当我将cursor.execute
代码替换为
cursor.execute("INSERT INTO ABCD (Serial) VALUES (%s)",(k,))
它抛出以下错误:
pyodbc.ProgrammingError :(“ 42000”,“ [42000] [Microsoft] [ODBC Microsoft Access驱动程序]
查询表达式'%s'中的语法错误。(-3100)(SQLPrepare)”)
显然,我缺少使用%s
。也许还有另一个占位符?
这应该是一个简单的修复程序,我对语法不太熟悉。
帮助新手吗?
Python的数据库API规范列出了几种进行参数化的方法:
qmark
:问号样式,例如 ...WHERE name=?
numeric
:数字,位置样式,例如 ...WHERE name=:1
named
:命名样式,例如 ...WHERE name=:name
format
:ANSI C printf格式代码,例如 ...WHERE name=%s
pyformat
:Python扩展格式代码,例如 ...WHERE name=%(name)s
大多数实现只支持一个或两个。它看起来像 pyodbc
使用qmark
风格的参数,而不是format
风格。
尝试以下方法:
cursor.execute("INSERT INTO ABCD (Serial) VALUES (?)", (k,))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句