关于python:PYODBC-找不到数据源名称并且未指定默认驱动程序

PYODBC--Data source name not found and no default driver specified

1
2
3
import pyodbc
connection = pyodbc.connect('Driver = {SQL Server};Server=SIWSQL43A\SIMSSPROD43A;'
                            'Database=CSM_reporting;Trusted_Connection=yes;')

connection = pyodbc.connect('Driver = {SQL Server};Server=SIWSQL43A\SIMSSPROD43A;'
pyodbc.Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')


不要在连接字符串中的Driver关键字后放置空格。

这在Windows上失败...

1
2
3
4
5
6
7
conn_str = (
    r'DRIVER = {SQL Server};'
    r'SERVER=(local)\SQLEXPRESS;'
    r'DATABASE=myDb;'
    r'Trusted_Connection=yes;'
)
cnxn = pyodbc.connect(conn_str)

...但这有效:

1
2
3
4
5
6
7
conn_str = (
    r'DRIVER={SQL Server};'
    r'SERVER=(local)\SQLEXPRESS;'
    r'DATABASE=myDb;'
    r'Trusted_Connection=yes;'
)
cnxn = pyodbc.connect(conn_str)


我遇到了同样的问题,并修复了更改连接字符串的问题,如下所示。

1
'DRIVER={ODBC Driver 13 for SQL Server}'

代替

1
'DRIVER={SQL Server}'


您可以尝试:

1
2
3
import pyodbc
# Using a DSN
cnxn = pyodbc.connect('DSN=odbc_datasource_name;UID=db_user_id;PWD=db_password')

注意:您将需要知道" odbc_datasource_name"。在Windows中,您可以搜索ODBC数据源。该名称将如下所示:

数据源名称示例


我遇到了这个问题,正在寻找解决方案。最终,我尝试了https://github.com/mkleehammer/pyodbc/wiki/Connecting-to-SQL-Server-from-Windows中的所有选项,并且对于我的MSSQL 12仅" {用于SQL Server的ODBC驱动程序11}"的作品。只需一一尝试。第二个重要的事情是您必须获得正确的服务器名称,因为我很珍贵地认为在所有情况下都需要设置 SQLEXPRESS,但是发现您必须完全设置服务器属性中的内容。屏幕截图上的示例:enter image description here


下面的连接字符串正在工作

1
2
3
4
5
6
7
8
import pandas as pd
import pyodbc as odbc

sql_conn = odbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER=SERVER_NAME;DATABASE=DATABASE_NAME;UID=USERNAME;PWD=PASSWORD;')

query ="SELECT * FROM admin.TABLE_NAME"
df = pd.read_sql(query, sql_conn)
df.head()

请尝试以下方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import pyodbc

server = 'servername'

database = 'DB'

username = 'UserName'

password = 'Password'

cnxn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)

cursor = cnxn.cursor()


cursor.execute('SELECT * FROM Tbl')

for row in cursor:
    print('row = %r' % (row,))


我正在使用

Django 2.2

并在连接到sql-server 2012时遇到了相同的错误。花了很多时间来解决此问题,终于成功了。

我变了

'driver': 'ODBC Driver 13 for SQL Server'

'driver': 'SQL Server Native Client 11.0'

而且有效。


对于错误:pyodbc.InterfaceError :(" IM002"," [IM002] [Microsoft] [ODBC驱动程序管理器]数据源名称未找到且未指定默认驱动程序(0)(SQLDriverConnect)")

驱动程序与事件之间没有空间

连接= Driver={SQL Server Native Client 11.0};
"Server=servername;"
"Database=dbname;"
"Trusted_Connection=yes;"