![](/img/trans.png)
[英]Unable to commit a Stored Procedure execution using PYODBC and SQLALCHEMY
[英]How to commit stored procedure execution by using pyodbc
我正在嘗試通過在 databricks 中使用 pyodbc 來執行存儲過程,在執行 SP 之后,我嘗試提交連接,但是提交沒有發生。 在這里我給出我的代碼,請幫助我解決這個問題。
import pyodbc
#### Connecting Azure SQL
def db_connection():
try:
username = "starsusername"
password = "password-db"
server = "server-name"
database_name = "db-name2"
port = "db-port"
conn=pyodbc.connect('Driver={ODBC Driver 17 for SQL server};SERVER=tcp:'+server+','+port+';DATABASE='+ database_name +';UID='+ username +';PWD='+ password)
cursor=conn.cursor()
return cursor, conn
except Exception as e:
print("Faild to Connect AZURE SQL: \n"+str(e))
cursor, conn = db_connection()
# conn1.autocommit=True
cursor.execute("delete from db.table_name")
cursor.execute("insert into db.table_name(BUSINESS_DATE) values('2021-10-02')")
cursor.execute("exec db.SP_NAME '20211023'")
conn.commit()
conn.close()
在這里,我在 SP 執行后提交連接。 刪除和插入根本沒有發生。 我嘗試使用 cursor.execute("SET NOCOUNT ON; exec db.SP_NAME '20211023'") 但它也不起作用。
提前致謝
如果您在 pyodbc 上查看此文檔,您會發現-
要立即調用存儲過程,請使用數據庫識別的格式或使用 ODBC 調用轉義格式將調用傳遞給 execute 方法。 然后 ODBC 驅動程序將為您重新格式化調用以匹配給定的數據庫。
請注意,在建立或完成連接后,請在調用您的 SP 之前嘗試執行conn.autocommit = True
,它會有所幫助。 默認情況下它是假的。
如果您遵循以下代碼片段,您將能夠執行您的存儲過程。
cursor = conn.cursor() conn.autocommit = True executesp = """EXEC yourstoredprocedure """ cursor.execute(executesp) conn.commit()
您可以刪除記錄,如下例所示。
...#just an example cursor.execute(''' DELETE FROM product WHERE product_id in (5,6) ''') conn.commit()
不要忘記在代碼末尾添加conn.commit() ,以確保該命令會被執行。
下面的代碼片段展示了我們如何做同樣的事情。
...#just an example cursor.execute("INSERT INTO EMP (EMPNO, ENAME, JOB, MGR) VALUES (535, 'Scott', 'Manager', 545)") conn.commit()
我建議您閱讀以下文檔以獲取更多信息。
在關閉連接之前關閉 cursor
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.