【问题标题】:Not sure why my Stored Procedure isn't working between pyodbc and SQL Server不知道为什么我的存储过程在 pyodbc 和 SQL Server 之间不起作用
【发布时间】:2013-02-11 23:50:43
【问题描述】:

我对 Python (2.7) 还很陌生,对 pyodbc 帮助不大。我有一个调用存储过程的脚本:

sql = "exec gen_all.dbo.rpt_trinity_total '" + startDate + "', '"  + endDate + "'"

print sql
dbCursor.execute(sql)   
rows = dbCursor.fetchall()

for row in rows:
    print row[0], row[1]

在存储过程结束时,我返回了传入的日期,只是为了确保在设置参数时调用 SP。一切看起来都应该正常工作,但是当我查看应该由 SP 填充的表时,里面什么都没有。如果我在管理控制台中运行 SP,它就可以正常工作。

我尝试了发现是here的解决方案,即:

dbCursor.execute("{call gen_all.dbo.rpt_trinity_total(?,?)}", (startDate),(endDate))

但给了我相同的结果,什么都没有。 SP 本身非常简单,TRUNCATE 和 INSERT,使用 SELECT,基于传递的日期。

只是想知道是否有人可以对此提供一些见解。非常感谢。

【问题讨论】:

  • 刚试过这个没有插入的SP,只有选择,它返回就好了。

标签: python sql-server-2008 pyodbc


【解决方案1】:

我怀疑问题在于您没有提交连接。 pyodbc disables auto-commit 默认满足 Python DB API 规范。尝试在您的连接上设置conn.autoCommit = True 或拨打conn.commit()

【讨论】:

  • 就是这样。非常感谢!
  • 这同样适用于 pymssql - 我尝试调用存储过程但没有提交它不会进行任何更改。感谢您也解释了这种行为。
猜你喜欢
  • 2016-11-11
  • 2019-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多