Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用pyodbc从ms access数据库中选择最后5分钟的数据?_Python_Sql_Ms Access_Pyodbc - Fatal编程技术网

Python 如何使用pyodbc从ms access数据库中选择最后5分钟的数据?

Python 如何使用pyodbc从ms access数据库中选择最后5分钟的数据?,python,sql,ms-access,pyodbc,Python,Sql,Ms Access,Pyodbc,我有以下查询(windows 7上的python pyodbc访问access db.mdb): DateADD似乎不起作用。我得到以下错误: pyodbc.Error: ('07002', '[070021] [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. 我试过在n周围加单引号、双引号和无引号,但这没有什么区别。根据DATADD MSDN页面上的示例(http://msdn.microsof

我有以下查询(windows 7上的python pyodbc访问access db.mdb):

DateADD
似乎不起作用。我得到以下错误:

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

我试过在n周围加单引号、双引号和无引号,但这没有什么区别。

根据DATADD MSDN页面上的示例(http://msdn.microsoft.com/en-us/library/ms186819.aspx),尝试使用

DATEADD(minute, -5, NOW())

根据DATADD MSDN页面上的示例(http://msdn.microsoft.com/en-us/library/ms186819.aspx),尝试使用

DATEADD(minute, -5, NOW())
两个问题:1)在
n
参数周围加双引号。2) 在
时间戳
周围放上方括号。(Access会在某些情况下将
时间戳
字段中的下划线解释为特殊字符。查询解析器会尽最大努力解释特殊字符,但有时会出错。方括号有助于解析器消除字段名称的歧义,以便正确地进行解析。)

就我的意见而言,我会使用
DateDiff
,因为当您阅读它时,它更有意义:

SQL = 'SELECT time_stamp, float_value FROM acq_spill_3_1_sec WHERE DateDiff("n",[time_stamp],Now()) <= 5'
SQL='SELECT time\u stamp,float\u value FROM acq\u spill\u 3\u 1sec WHERE DateDiff(“n”,“time\u stamp],Now())两个问题:1)在
n
参数周围加上双引号。2) 在
时间戳
周围放上方括号。(Access会在某些情况下将
时间戳
字段中的下划线解释为特殊字符。查询解析器会尽最大努力解释特殊字符,但有时会出错。方括号有助于解析器消除字段名称的歧义,以便正确地进行解析。)

就我的意见而言,我会使用
DateDiff
,因为当您阅读它时,它更有意义:

SQL = 'SELECT time_stamp, float_value FROM acq_spill_3_1_sec WHERE DateDiff("n",[time_stamp],Now()) <= 5'

SQL='选择时间戳,从acq\u溢出3\u 1秒中选择浮点值,其中DateDiff(“n”,“时间戳],Now())谢谢。但这并不能解决问题。t-SQL答案对访问问题没有帮助。谢谢。但这并不能解决问题。t-SQL答案对访问问题没有帮助。谢谢您的帮助。但这似乎不起作用。获取相同的错误。当您尝试在Access中编写和运行相同的查询时,会得到什么?我自己在Access 2007中尝试过这一点,它成功了。如果您在Access中得到了一个工作查询,那么您可以通过将“EXECUTE QueryName”作为SQL字符串传递,直接从代码中调用它。请详细说明这一点:“在某些情况下,Access会将时间戳字段中的下划线解释为特殊字符。”在什么情况下,字段名中的下划线会混淆数据库引擎?我希望我可以。。。Access中的查询解析器通常具有非常不可预测的行为。如果我怀疑有问题,我就用方括号括住任何可能会混淆解析器的内容。有关一些示例,请参见。请注意,本页未提及下划线问题,但它们确实存在(如OP的问题)。感谢您的帮助。但这似乎不起作用。获取相同的错误。当您尝试在Access中编写和运行相同的查询时,会得到什么?我自己在Access 2007中尝试过这一点,它成功了。如果您在Access中得到了一个工作查询,那么您可以通过将“EXECUTE QueryName”作为SQL字符串传递,直接从代码中调用它。请详细说明这一点:“在某些情况下,Access会将时间戳字段中的下划线解释为特殊字符。”在什么情况下,字段名中的下划线会混淆数据库引擎?我希望我可以。。。Access中的查询解析器通常具有非常不可预测的行为。如果我怀疑有问题,我就用方括号括住任何可能会混淆解析器的内容。有关一些示例,请参见。请注意,本页没有提到下划线的问题,但它们确实存在(如OP的问题)。