python - 使用 pyodbc 在 Access 中处理日期,出现 "Too few parameters"错误

标签 python sql ms-access ms-access-2013 pyodbc

我正在使用带有 pyodbc 导入的 Python。

我使用的是 Microsoft Office 2013 64 位。

我正在尝试查询 accdb 数据库以选择一个范围内的不同日期并将它们分配给一个游标,这样我就可以将它们附加到一个列表中。

我的 Access 数据库有一个名为 Closing_prices 的表和一个名为 Date_ 的列,其数据类型为“日期/时间”。

我的代码如下:

cursor=conx.cursor()
query="select distinct Date_ FROM Closing_prices where Date_ >= '10/8/2011' and Date_ < '30/04/2014'"
cursor.execute(query)
dates=list()
for date in cursor:
   dates.append(date[0])

但是我收到了错误消息:

Traceback (most recent call last):
  File "C:/Users/Stuart/PycharmProjects/untitled/Apache - Copy.py", line 20, in <module>
cursor.execute(query)
pyodbc.Error: ('07002', '[07002] [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. (-3010) (SQLExecDirectW)')

由于 Date_ 是日期时间,我也尝试过:

query="select distinct Date_ FROM Closing_prices where Date_ >= '10/8/2011 00:00:00' and Date_ < '30/04/2014 00:00:00'"

当我运行时:

cursor = conx.cursor()
query="select Date_ FROM Closing_prices"
cursor.execute(query)

for row in cursor:
    print row

print type(row[0])

我得到以下输出作为示例:

(datetime.datetime(2014, 3, 24, 0, 0), )
(datetime.datetime(2014, 3, 25, 0, 0), )
(datetime.datetime(2014, 3, 26, 0, 0), )
(datetime.datetime(2014, 3, 27, 0, 0), )

我是 Python 的新手,甚至是 SQL 查询的新手,所以有人可以指出我哪里出错了,也许我可以如何更改我的代码以帮助我根据需要将不同的日期附加到列表中。

非常感谢。

最佳答案

  1. 省去寻找适用日期分隔符的麻烦,并且
  2. 促进良好的编码习惯

您应该像这样简单地使用参数化查询:

db = pyodbc.connect(connStr)
crsr = db.cursor()
sql = """
SELECT DISTINCT Date_ FROM Closing_prices WHERE Date_ >= ? AND Date_ < ?
"""
params = (datetime.date(2011, 8, 10), datetime.date(2014, 4, 30))
crsr.execute(sql, params)

关于python - 使用 pyodbc 在 Access 中处理日期,出现 "Too few parameters"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28568110/

相关文章:

python - 如何分割包含特殊字符的字符串

Python Flask 将基于纬度和经度的半径过滤器的计算转换为 SQLalchemy

php - 关键字 GO 在 PHP 中抛出错误

mysql - 如何在MySQL中执行IS_THE_SUBSET_OF函数?

ms-access - 运行时错误6溢出

ms-access - MS Access 下拉列表/组合框

python - 这个函数如何找到另一个变量的值?

Python 绘制两个变量之间的每月数据

mysql - 获取过去两个月的记录,不包括今天的记录列表

database - MS Access 链接表问题