【发布时间】:2017-04-03 19:12:20
【问题描述】:
运行此最小代码时:
import pypyodbc
conn = pypyodbc.connect(r'Driver={{Microsoft Access Driver (*.mdb, *.accdb)}}; Dbq=C:\temp\example.accdb;'
cur = conn.cursor()
cur.execute('SELECT [Pass#] FROM [Companies]')
我收到以下错误:
pypyodbc.DatabaseError: ('07002', '[07002] [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.')
错误的原因似乎是“#”字符,它是 MS Access 的特殊通配符。但是,我想不出任何办法来逃避它。类似的错误表明方括号 ([]) 是转义方式,但它似乎不起作用。
我已经尝试过这样的变体,但没有成功:
cur.execute('SELECT [Pass[#]] FROM [Companies]')
cur.execute('SELECT Pass[#] FROM [Companies]')
cur.execute('SELECT [Pass\\#] FROM [Companies]')
cur.execute('SELECT Pass# FROM [Companies]')
我还应该提到 Access DB 不受我或我的公司控制,因此我无法重命名该列。
【问题讨论】:
-
cur.execute('SELECT [Pass\#] FROM [Companies]') 怎么样
-
我也尝试过这种变化。没有骰子。
-
@June7 是正确的。您不能“执行”选择查询。
-
cur.execute("SELECT [Pass#] FROM [Companies]")是正确的——它对我有用。仔细检查列名以确保它完全匹配,例如,如果字段名实际上是[Pass #],[Pass#]将不起作用。
标签: python ms-access odbc pypyodbc