簡體   English   中英

如何使用 pyodbc 提交存儲過程執行

[英]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 ,它會有所幫助。 默認情況下它是假的。

  1. 執行存儲過程。

    如果您遵循以下代碼片段,您將能夠執行您的存儲過程。

     cursor = conn.cursor() conn.autocommit = True executesp = """EXEC yourstoredprocedure """ cursor.execute(executesp) conn.commit()
  2. 刪除 SQL Server 中的記錄

    您可以刪除記錄,如下例所示。

     ...#just an example cursor.execute(''' DELETE FROM product WHERE product_id in (5,6) ''') conn.commit()

    不要忘記在代碼末尾添加conn.commit() ,以確保該命令會被執行。

  3. 在 SQL Server 中插入記錄

    下面的代碼片段展示了我們如何做同樣的事情。

     ...#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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM