不知道为什么我的存储过程在pyodbc和SQL Server之间不起作用

spu*_*ett 4 python pyodbc sql-server-2008

我是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]
Run Code Online (Sandbox Code Playgroud)

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

我试了一下,发现是该解决方案在这里,即:

dbCursor.execute("{call gen_all.dbo.rpt_trinity_total(?,?)}", (startDate),(endDate))
Run Code Online (Sandbox Code Playgroud)

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

只是想知道是否有人可以对此有所了解.谢谢一堆.

Yev*_*kiy 11

我怀疑问题是你没有提交连接.默认情况下pyodbc 禁用自动提交以满足Python DB API规范.尝试设置conn.autoCommit = True或呼叫conn.commit()您的连接.

  • 就是这样。非常感谢! (2认同)