尝试根据报表的生产日期动态地将SQL Server数据库表加载到Python数据帧中。当我写作时,我的问题如下:
import pyodbc
conn = pyodbc.connect(server = "10.87.254.73", Database= "CTData", Driver ="{SQL Server}")
PCBondsDB = pd.read_sql_query("Select * From [MarketData].[pcbond].[PCbonds] where ClosingDate = '2020-04-13'", conn)
conn.close()
它可以工作,我可以连接到数据库并提取我的表,但是如果我将where ClosingDate=更改为包含日期作为字符串的变量,它将不起作用
假设DateProd='2020-04-13',现在我尝试:
PCBondsDB = pd.read_sql_query("Select * From [MarketData].[pcbond].[PCbonds] where ClosingDate =
'DateProd'",
它向我抛出了一个错误,即:从[MarketData].[pcbond].[PCbonds]中选择sql'Select*,其中ClosingDate='DateProd':('22007','[22007][Microsoft][ODBC sql Server Driver][sql Server]从字符串转换日期和/或时间时执行失败。(241)(SQLExecDirectW)]
这对于为什么当我将它作为一个literal传递,其中ClosingDate='2020-04-13'起作用是完全没有意义的,但是当我尝试使用ClosingDate='DateProd'(其中包含完全相同的值和作为字符串的数据类型)的变量时,它将不起作用并抛出错误
我试着把引号加倍,三倍,把单引号和双引号倒过来,似乎什么都不管用。我环顾了一下论坛,找不到这个具体问题的答案。我认为解决方案很简单,但我是Python的新手,我想知道。。我正试图使这个动态,所以是的,我需要使用一个变量
谢谢
您正在传递字符串文字
'DateProd'
作为日期。您需要将变量的值作为参数传递,如下所示:相关问题 更多 >
编程相关推荐