【发布时间】:2021-03-23 20:06:39
【问题描述】:
有人可以解释为什么我在使用 pandas 执行以下简单查询时会出错:
import pyodbc
import pandas as pd
connstr = 'Driver={SQL Server}; Server=sr1; Database=db'
conn = pyodbc.connect(connstr)
query = """DECLARE @t AS DATETIME;
SET @t = \'12-01-2020\';
select top 10 AccountNumber
FROM db.tb
where ForecastDate >= @t"""
rt = pd.read_sql_query(conn, query)
conn.close()
ArgumentError: Could not parse rfc1738 URL from string 'DECLARE @t AS DATETIME;
SET @t = '12-01-2020';
我知道我可以将变量t 作为参数传递给pandas,它会起作用,但我想原则上了解导致错误的原因,对可以传递给pandas 的查询有哪些限制。查询似乎与cursor.execute(query) 一起工作正常。
【问题讨论】:
-
为什么需要申报?只需通过 iso 格式将日期传递到 where 子句:
'YYYY-MM-DD'。或者从 Python 中作为参数传递。 -
是的,我可以。我只是想了解原则上声明有什么问题。
-
read_sql的第一个参数是 SQL 查询字符串而不是连接对象。 -
是的,这不是一个聪明的错误。
标签: python sql sql-server pandas pyodbc