我正试图通过python连接到SQL在Microsoft SQL服务器上的一些SQL数据库上运行一些查询。 从我的研究网上和在这个论坛上最有前途的图书馆似乎是pyodbc。 所以我做了下面的代码
import pyodbc conn = pyodbc.connect(init_string="driver={SQLOLEDB}; server=+ServerName+; database=+MSQLDatabase+; trusted_connection=true") cursor = conn.cursor()
并得到以下错误
Traceback (most recent call last): File "C:\Users...\scrap.py", line 3, in <module> conn = pyodbc.connect(init_string="driver={SQLOLEDB}; server=+ServerName+; database=+MSQLDatabase+; trusted_connection=true") pyodbc.Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')
我已经看了下面的post,并试图将我的驱动程序更改为{sql server},并在SAS之前使用ODBC链接进行连接,这部分是我上面的代码所基于的,所以不要以为我需要安装其他任何东西。
pyodbc.Error:('IM002','[IM002] [unixODBC] [驱动程序pipe理器]未find数据源名称,并没有指定默认驱动程序(0)(SQLDriverConnect)')
Pyodbc – “找不到数据源名称,没有指定默认驱动程序”
谢谢
我就是这么做的
import pyodbc cnxn = pyodbc.connect("Driver={SQL server Native Client 11.0};" "server=server_name;" "Database=db_name;" "Trusted_Connection=yes;") cursor = cnxn.cursor() cursor.execute('SELECT * FROM Table') for row in cursor: print('row = %r' % (row,))
相关资料来源:
在客户端和服务器之间的数据源连接中,有两种常见类型:使用DRIVER的ODBC和使用PROVIDER的OLEDB。 而在编程领域, 关于连接到数据源的路线是一个定期的争论 。
您正在使用提供程序SQLOLEDB
,但将其指定为驱动程序。 据我所知,pyodbc和pypyodbc模块都不支持Window OLEDB连接。 但是, adodbapi使用Microsoft ADO作为底层组件。
以下是您的连接参数的两种方法。 另外,我字符串格式化你的变量,因为你的连接没有正确地打破字符串内的引号。 你会注意到我把花括号加倍,因为在连接字符串和string.format()
都需要它。
# PROVIDER import adodbapi conn = adodbapi.connect("PROVIDER=SQLOLEDB;Data Source={0};Database={1}; \ trusted_connection=yes;UID={2};PWD={3};".format(serverName,MSQLDatabase,username,password)) cursor = conn.cursor() # DRIVER import pyodbc conn = pyodbc.connect("DRIVER={{SQL server}};SERVER={0}; database={1}; \ trusted_connection=yes;UID={2};PWD={3}".format(serverName,MSQLDatabase,username,password)) cursor = conn.cursor()
稍微增加了之前所说的内容。 你可能想要返回一个数据框。 这将作为
import pypyodbc import pandas as pd cnxn = pypyodbc.connect("Driver={SQL server Native Client 11.0};" "server=server_name;" "Database=db_name;" "uid=User;pwd=password") df = pd.read_sql_query('select * from table', cnxn)
另一种方法是安装 Microsoft ODBC驱动程序13,然后用ODBC Driver 13 for SQL server
替换SQLOLEDB
问候。