2013-05-22 24 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可以到达的地方。