不明白为什么我的存储过程在pyodbc和SQL Server之间不工作
我刚接触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]
在这个存储过程的最后,我返回了传入的日期,只是为了确认存储过程确实被调用了,并且参数也被正确设置了。看起来一切都应该正常,但当我查看应该被这个存储过程填充的表时,里面什么都没有。如果我在管理控制台中运行这个存储过程,它是可以正常工作的。
我尝试了在这里找到的解决方案,也就是:
dbCursor.execute("{call gen_all.dbo.rpt_trinity_total(?,?)}", (startDate),(endDate))
但结果还是一样,什么都没有。这个存储过程本身非常简单,主要是进行一个清空(TRUNCATE)和插入(INSERT),使用传入的日期进行选择(SELECT)。
我只是想知道有没有人能给点建议。非常感谢。
2 个回答
0
在执行完
cursors = sql_con.cursor()
qry = "exec SP_NAME @Parm1 = ?, @Parm2 = ?"""
params = (val1, val2)
cursors.execute(qry, params)
cursors.commit()
cursors.close()
17
我觉得问题可能是你没有在连接时进行提交。pyodbc
默认情况下是关闭自动提交的,这样做是为了符合 Python 数据库 API 的规定。你可以试着把 conn.autoCommit = True
设置为真,或者在你的连接上调用 conn.commit()
来手动提交。