当前位置: 首页 > 面试题库 >

使用pyodbc在Access中使用日期会产生“几乎没有参数”错误

夏侯彬郁
2023-03-14
问题内容

我正在将Python与pyodbc导入一起使用。

我正在使用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)


 类似资料:
  • 更改日期格式时出错。我从服务器获取的日期是这样的:2019-08-20T08:05:15.680Z。 需要的日期格式 : 日照 月 年, 日:毫米 a

  • 我将QueryDSL与jpa一起使用,我想查找日期范围之间的记录,如下所示 但between仅支持布尔表达式和字符串表达式

  • 当我在spring boot应用程序中使用lombok时,java:java。生成lang.ExceptionInInitializerError。我能做些什么来防止这个错误? 我都做了些什么? > 我已经在IntelliJ中安装了lombok插件,并在安装插件后重新启动了它。 我已经启用了两个版本的注释处理器 > 文件- 我还尝试将pom.xml中的依赖范围更改为“提供” 我尝试了龙目的其他版本

  • 问题内容: 今天,我第一次在“生产”模式下运行Node.js应用程序,并收到以下警告: 我只需要运行一个进程,但是应该使用什么呢?我希望我的会话驻留在RAM中以便快速访问。我还希望能够通过仅关闭Node应用程序来丢弃所有会话。 仅安装Redis,MongoDB或其他数据库来完成此简单任务似乎是过大的选择。我也不明白为什么不应该真正使用Node中包含MemoryStore? 问题答案: Memory

  • 马上,我是一个初学者,所以这个问题可能看起来很初级。 每当我使用“extends”并尝试编译时,我都会得到如下错误消息: 我确实知道参数有问题(在本例中是值为“OLAF”的字符串),但我不明白具体是什么问题。此外,我没有得到第二个错误消息。 正如前面所说,我是一个初学者。我发现了几个类似问题的帖子,但无法理解解决方案。很多人都写过一些关于“super()”的东西。我既不知道这段代码应该做什么,也不

  • 问题内容: 如果我有一个, 并且想要获得一周中的特定时间(由0(星期日)至6(星期六)指定)。 例如,如果我有as 和as ,我想得到,如果我有as , 编辑: 你们大多数人都误解了它。我有一些日期,并且想要获得由同一周的0-6指定的日期。 所以不,我不要… 的日子 问题答案: 我想这就是你想要的。