使用Python连接到SQL Server

9

我希望能够通过集成安全方式从IPython笔记本连接到SQL Server数据库。

这个是否可行?我猜是可以的。

在下面的代码中,我该如何格式化连接字符串呢?

import pandas as pd
import pandas.io.sql as psql
sql = "SELECT * FROM WHdb.dbo.vw_smallTable"
cnx = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=WHdb;Data Source=OurServerName"
data = psql.read_sql(sql, cnx)

这只是一个错误提示。 我对cnx的使用方式有误吗?

1
请发布完整的错误信息。 - kylieCatt
@IanAuld 离开了工作机器(去睡觉了!)- 我明天会添加消息。表面上看起来没问题吗?我正确地使用了字符串作为read_sql的第二个参数吗? - whytheq
我怀疑我不会有太大帮助,因为我从未使用过Python的SQLServer。然而,这个问题的写法正好符合“这段代码为什么不能工作?”的关闭原因。我不会投票关闭,但它确实有被关闭的风险。 - kylieCatt
@IanAuld 希望这对我有所帮助 - 明天会尝试:https://dev59.com/gWQn5IYBdhLWcg3w36M1 - whytheq
2个回答

11

您需要安装pypyodbc包。

!pip install pypyodbc

然后,您可以按照以下方式导入它:

import pypyodbc as podbc

您现在可以创建连接:

conn = podbc.connect("Driver={SQL Server};Server=<YourServer>;Database=<YourDatabase>;uid=<YourUserName>;pwd=<YourPassword>"

最后,您可以按照以下方式获取数据:

cursor = conn.cursor()
sql = "SELECT * FROM WHdb.dbo.vw_smallTable"
cursor.execute(sql)
data = cursor.fetchone()
while data:
    print(str(data[0]) + ", " + ... + ", " + str(data[n-1]))
    data = cursor.fetchone()
conn.close()

请注意,n = 您的表中的列数。


1

这是对我很有效的方法...

import pyodbc

server = 'myserver'

database = 'mydb'

username = 'myusername'

password = 'mypassword'



#Connection String

connection = pyodbc.connect('DRIVER={SQL Server Native Client 11.0};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)

cursor = connection.cursor()



#Sample select query

cursor.execute("SELECT @@version;")

row = cursor.fetchone()

while row:

    print row[0]

    row = cursor.fetchone()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接