从 Python 连接到 SQL Server

Posted

技术标签:

【中文标题】从 Python 连接到 SQL Server【英文标题】:Connecting from Python to SQL Server 【发布时间】:2016-07-01 11:44:31 【问题描述】:

我想通过集成安全性从 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

【问题讨论】:

请发布完整的错误 @IanAuld 不得不离开工作机器(睡觉!) - 我明天会添加味精。表面上看起来还好吗?我以这种方式使用字符串作为read_sql 的第二个参数是否正确? 我怀疑我会不会有很大帮助,因为我从来没有在 Python 中使用过 SQLServer。然而,所写的这个问题完全属于“这段代码不起作用?”关闭的原因。我不会投票关闭,但它确实有被关闭的风险 @IanAuld 我希望这对我有帮助 - 明天试试:***.com/questions/16515420/… 【参考方案1】:

你需要安装包,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 = 表格中的列数。

【讨论】:

【参考方案2】:

这对我很有效......

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()

【讨论】:

以上是关于从 Python 连接到 SQL Server的主要内容,如果未能解决你的问题,请参考以下文章

Pyspark:使用 Python 从 Spark 2.4 连接到 MS SQL Server 2017 时没有合适的驱动程序错误

不使用 ODBC 将 Python 连接到 SQL Server

如何使用 Active Directory 集成身份验证通过 python SQL alchemy 连接到 Azure sql 数据库

无法从Virtualbox连接到SQL Server

尝试使用启用了 TLS 的连接的 python 连接到 Sybase 和 Azure SQL 服务器

使用 pymssql 连接到 SQL Server 实例