2013-05-22 55 views
13

我想在SQL Server上的表發生更改時在Python中設置回調,這與在此處爲Oracle執行的操作類似。
http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/oow10/python_db/python_db.htm#t11如何使用python完成SQL Server上的查詢通知

有沒有一個庫允許我在Python中這樣做,一個例子將不勝感激。

+1

您是否需要一個純粹的CPython解決方案,或者您是否可以將.NET組件集成爲一個Python和SQL Server之間的接口,或者使用IronPython? .NET有用於監視SQL Server中的數據更改的[SqlDependency類](http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqldependency.aspx),因此如果您可以使用.NET以某種方式,然後你可以使用它,否則你可能不得不解決投票。並且知道您正在使用哪個操作系統以及如何連接到SQL Server將會很有幫助。 – Pondlife

+0

我在Windows上,使用純python。我想我可以嘗試集成一個.Net組件。你知道一個例子嗎?謝謝。 – Roman

+0

該文檔有[示例代碼](http://msdn.microsoft.com/en-us/library/62xk7953(v = vs.110).aspx)使用'SqlDependency'但我不知道任何'標準「的方式來實現Python到.NET的橋樑。你可以編寫一個Python服務器可以通過HTTP或套接字使用的.NET服務,但這確實是你的應用程序設計問題。 – Pondlife

回答

1

首先,下載ODBC Driver for Linux 然後使用PIP

pip install pyodbc==3.1.1 

創建此代碼PY文件安裝pyodbc:

import pyodbc 
server = 'yourserver.database.windows.net' 
database = 'yourdatabase' 
username = 'yourusername' 
password = 'yourpassword' 
driver= '{ODBC Driver 13 for SQL Server}' 
cnxn = pyodbc.connect('DRIVER='+driver+';PORT=1433;SERVER='+server+';PORT=1443;DATABASE='+database+';UID='+username+';PWD='+ password) 
cursor = cnxn.cursor() 
cursor.execute("select @@VERSION") 
row = cursor.fetchone() 
if row: 
    print row 

這就是你的基本連接和呼叫。然後按照從你的oracle鏈接的程序,「使用連續查詢通知」

但是......也許b/c我是一個SQL人和安全wonk,看起來你會更好有SQL Server推改變通知到python可以到達的地方。