PYODBC - 未找到数据源名称且未指定默认驱动程序

时间:2017-09-05 01:32:54

标签: python sql pyodbc

html - head - body -  div - ul - li - dt - span - input
  

connection = pyodbc.connect('Driver = {SQL Server}; Server = SIWSQL43A \ SIMSSPROD43A;'       pyodbc.Error:('IM002','[IM002] [Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序(0)(SQLDriverConnect)')

19 个答案:

答案 0 :(得分:9)

不要在连接字符串中的Driver关键字后面加一个空格。

这在Windows上失败了......

conn_str = (
    r'DRIVER = {SQL Server};'
    r'SERVER=(local)\SQLEXPRESS;'
    r'DATABASE=myDb;'
    r'Trusted_Connection=yes;'
)
cnxn = pyodbc.connect(conn_str)

......但这有效:

conn_str = (
    r'DRIVER={SQL Server};'
    r'SERVER=(local)\SQLEXPRESS;'
    r'DATABASE=myDb;'
    r'Trusted_Connection=yes;'
)
cnxn = pyodbc.connect(conn_str)

答案 1 :(得分:4)

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

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

而不是

'DRIVER={SQL Server}'

答案 2 :(得分:4)

本地 Ms Sql 数据库服务器需要或 {ODBC driver 17 for SQL Server} Azure Sql 数据库需要{ODBC 驱动程序 13 for SQL SERVER}

在此处检查已安装的驱动程序 => Installed ODBC Drivers

连接到 Azure Sql 数据库的格式是:

import pyodbc
conn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};'
                      'SERVER=tcp:nameServer.database.windows.net,1433;'
                      'DATABASE=Name database; UID=name; PWD=password;')

连接到 Ms SQL 数据库本地的格式:

import pyodbc
conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};'
                      'SERVER=server.name;' // example Doctor-Notebook\\MSSQLEXPRESS
                      'DATABASE=database.name; Trusted_connection = yes')

答案 3 :(得分:2)

我正在使用

  

Django 2.2

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

我改变了

  

'驱动程序':'用于SQL Server的ODBC驱动程序13'

  

“驱动程序”:“ SQL Server本机客户端11.0”

它奏效了。

答案 4 :(得分:1)

您需要为 SQL Server 下载 Microsoft ODBC Driver 13 来自Microsoft ODBC Driver 13

答案 5 :(得分:1)

我也遇到同样的错误。终于我找到了解决方案。

我们可以在本地程序中搜索odbc并检查odbc的版本。就我而言,我有版本17和11。我已经在连接字符串中使用了17

enter image description here

'DRIVER = {用于SQL Server的ODBC驱动程序17}'

答案 6 :(得分:1)

除了其他考虑连接字符串本身的答案外,可能仅需要下载正确的odbc驱动程序。我的客户在执行python应用程序时就遇到了这个问题,需要它。 您可以通过按Windows +键入“ odbc”来进行检查。 正确的驱动程序应显示在驱动程序选项卡中。

答案 7 :(得分:1)

下面的代码很神奇。

 SQLALCHEMY_DATABASE_URI = "mssql+pyodbc://<servername>/<dbname>?driver=SQL Server Native Client 11.0?trusted_connection=yes?UID" \
                              "=<db_name>?PWD=<pass>"

答案 8 :(得分:1)

为您的连接创建一个类似这样的DSN(ASEDEV),并尝试使用DSN代替如下所示的DRIVER:

enter code here
import pyodbc
cnxn = pyodbc.connect('DSN=ASEDEV;User ID=sa;Password=sybase123')
mycur = cnxn.cursor()
mycur.execute("select * from master..sysdatabases")
row = mycur.fetchone()
while row:
    print(row)
    row = mycur.fetchone()`

答案 9 :(得分:0)

您是否已在系统计算机中安装任何SQL产品? 您可以下载并安装“ SQL Server ODBC驱动程序13(或任何版本)”,如果还没有完成,请尝试运行。

答案 10 :(得分:0)

我整天都面临着同一问题,我尝试了所有可能的ODBC Driver

import pyodbc
connection = pyodbc.connect('Driver = {SQL Server};Server=ServerName;'
                            'Database=Database_Name;Trusted_Connection=yes;')

我们可以代替Driver = {SQL Server}一次尝试这些选项,或者您可以使用相应的设置,就我而言,最后一个可行:)

Driver={ODBC Driver 11 for SQL Server} for SQL Server 2005 - 2014
Driver={ODBC Driver 13 for SQL Server} for SQL Server 2005 - 2016
Driver={ODBC Driver 13.1 for SQL Server} for SQL Server 2008 - 2016
Driver={ODBC Driver 17 for SQL Server} for SQL Server 2008 - 2017

Driver={SQL Server} for SQL Server 2000
Driver={SQL Native Client} for SQL Server 2005
Driver={SQL Server Native Client 10.0} for SQL Server 2008
Driver={SQL Server Native Client 11.0} for SQL Server 2012

答案 11 :(得分:0)

我在python3上遇到了同样的错误,这对我有帮助:

conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};'
                      'SERVER=YourServerName;'
                      'DATABASE=YourDatabaseName;UID=USER_NAME;PWD=PASS_WORD;')

请记住,python是区分大小写的,因此您必须以大写形式提及DRIVER,SERVER...。 您可以访问此链接以获取更多信息:

https://docs.microsoft.com/en-us/sql/connect/python/pyodbc/step-3-proof-of-concept-connecting-to-sql-using-pyodbc?view=sql-server-ver15

答案 12 :(得分:0)

下面的连接字符串有效

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

答案 13 :(得分:0)

尝试以下方法:

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

答案 14 :(得分:0)

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

驱动程序和事件之间没有空格

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

答案 15 :(得分:0)

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

答案 16 :(得分:0)

您可以尝试

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

注意:您将需要知道“ odbc_datasource_name”。在Windows中,您可以搜索ODBC数据源。名称看起来像这样:

Data Source Name Example

答案 17 :(得分:-1)

如果有人试图访问以azure托管的数据库,请尝试将该驱动程序指定为SQL Server的ODBC Driver 17

答案 18 :(得分:-1)

确保安装了所有驱动程序和数据库引擎

https://www.microsoft.com/en-us/download/details.aspx?id=54920