添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
玩篮球的茴香  ·  [CMake教程] ...·  3 周前    · 
胆小的豆浆  ·  matlab ...·  3 周前    · 
近视的剪刀  ·  iOS ...·  1 年前    · 
爽快的充电器  ·  十四、 ...·  1 年前    · 
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'",

它向我抛出一个错误说。对 sql 'Select * From [MarketData].[pcbond].[PCbonds] where ClosingDate = 'DateProd''执行失败:('22007', '[22007] [Microsoft][ODBC SQL Server Driver][SQL Server]从字符串转换日期和/或时间时转换失败。(241) (SQLExecDirectW) ')

这完全没有意义,为什么当我把它作为ClosingDate='2020-04-13'的变量传递时,它可以工作,但当我试图使用ClosingDate='DateProd'的变量时(它包含完全相同的值和数据类型是一个字符串),它不会工作并抛出一个错误。

我试着把引号加倍、三倍,把单引号和双引号倒置,似乎都不起作用。我在论坛上找了一圈,没有找到这个具体问题的答案。我认为解决方案很简单,但我是Python的一个新手,想知道。我想让这个东西变成动态的,所以是的,我需要使用一个变量...

2 个评论
SMor
你需要阅读文档,或者从众多的例子、教程或论坛帖子中找出一个关于在python中对sql调用进行参数化的例子。在你的尝试中,你根本就没有传递一个 "变量"--你只是把你的变量名作为一个字符串字面传递。
现在我对参数部分有了更深的理解,因为另一个人已经回答了,现在我可以看到我的问题是如何在另一个主题中得到某种程度的回答。但是说实话,如果没有这个提示,我可能会花更多的时间,哈哈哈。不过也感谢你的建议。我现在对Python的学习已经有3个星期了,请原谅我吧 xD
python
sql
sql-server
dataframe
pyodbc
YoungFella
YoungFella
发布于 2020-04-21
1 个回答
Gord Thompson
Gord Thompson
发布于 2020-04-21
已采纳
0 人赞同

你正在传递字符串字面'DateProd'作为日期。你需要传递的是价值的变量作为一个参数,像这样。