Python:pyodbc,microsoftaccess:表中的更新日期,参数太少

2024-10-02 18:19:16 发布

您现在位置:Python中文网/ 问答频道 /正文

正在使用的版本:python 3.7.2rc1Microsoft Access 2003

我想根据身份证和日期得到一个特定的记录。如果我删除日期参数,它可以正常工作。但是使用mydate变量得到如下所示的错误。你知道吗

price_list__only = date_out[0]
#print('pricelist = '+str(price_list__only))
mydate = datetime.date(2018, 12, 1)
#print(mydate)

sql = '''
SELECT * FROM view_price_list WHERE SuppID = ? and "Price List Date" =     ?
'''
parmeters = (price_list__only, mydate)
cursor.execute(sql,parmeters)

Error output: pyodbc.Error: ('07002',[07002], [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 3


Tags: 版本onlysql参数dateaccess记录error
2条回答

ANSI SQL-1992之后的大多数关系数据库不同,msaccesssql(generally ANSI -89 Level 1 compliant)不使用双引号作为表或列等标识符。在Access(如Python)中,双引号相当于单引号来括起字符串文本。你知道吗

因此,必须用空格或特殊字符?!@#$%^&*()_+或匹配的reserved words转义标识符。使用方括号,这是与SQL Server和SQLite共享的功能:

sql = '''SELECT * FROM view_price_list 
         WHERE SuppID = ? and [Price List Date] = ?
      '''

或者使用backticks,一个与MySQL共享的功能:

sql = '''SELECT * FROM view_price_list 
         WHERE SuppID = ? and `Price List Date` = ?
      '''

您需要将字段名用空格“括起来”(或者更好:避免这些空格):

SELECT * FROM view_price_list WHERE SuppID = ? and [Price List Date] = ?

或者纠正错误:

SELECT * FROM view_price_list WHERE SuppID = ? and Price_List_Date = ?

相关问题 更多 >