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

Python PYODBC--未找到数据源名称,未指定默认驱动程序,python,sql,pyodbc,Python,Sql,Pyodbc,错误: import pyodbc connection = pyodbc.connect('Driver = {SQL Server};Server=SIWSQL43A\SIMSSPROD43A;' 'Database=CSM_reporting;Trusted_Connection=yes;') 不要在连接字符串中的驱动程序关键字后加空格 这在Windows上失败 conn\u str=( r'DRIVER={SQL Server};

错误:

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

不要在连接字符串中的
驱动程序
关键字后加空格

这在Windows上失败

conn\u str=(
r'DRIVER={SQL Server};'
r'SERVER=(本地)\SQLEXPRESS;'
r'DATABASE=myDb;'
r'Trusted_Connection=yes;'
)
cnxn=pyodbc.connect(conn_str)
。。。但这是可行的:

conn\u str=(
r'DRIVER={SQL Server};'
r'SERVER=(本地)\SQLEXPRESS;'
r'DATABASE=myDb;'
r'Trusted_Connection=yes;'
)
cnxn=pyodbc.connect(conn_str)

我遇到了同样的问题,并通过如下更改连接字符串修复了它。 写

而不是

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

你可以试试看:

'DRIVER={SQL Server}'
注意:您需要知道“odbc\u数据源\u名称”。在Windows中,可以搜索ODBC数据源。名称将如下所示:


我面对这个问题,正在寻找解决方案。最后,我尝试了来自的所有选项,对于我的MSSQL 12,只有“{ODBC Driver 11 for SQL Server}”起作用。一个接一个地试试看。第二件重要的事情是,您必须获得正确的服务器名称,因为我仔细考虑了在所有情况下都需要设置\SQLEXPRESS,但发现您必须准确地设置您在服务器属性中看到的内容。屏幕截图上的示例:

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

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

连接=
Driver={SQLServer本机客户端11.0}
“Server=servername;”
“数据库=dbname;”
“Trusted_Connection=yes;”
我正在使用Django 2.2

在连接到sql server 2012时出现相同错误。花了很多时间来解决这个问题,最后终于奏效了

我把司机换成了司机

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

它成功了。

试试下面的方法:

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

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

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

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

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

下面的代码非常有用

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()
SQLALCHEMY\u DATABASE\u URI=“mssql+pyodbc://?driver=SQL Server本机客户端11.0?受信任的\u连接=是?UID”\
“=?PWD=”

为您的连接创建一个类似于(ASEDEV)的DSN,并尝试使用DSN而不是驱动程序,如下所示:

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

如果有人试图访问azure中托管的数据库,请尝试将驱动程序作为SQL Server的ODBC驱动程序17提供

我在python3上遇到了相同的错误,这有助于我:

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()`
记住python是区分大小写的,所以您必须提到驱动程序、服务器,。。。大写。 您可以访问此链接了解更多信息:


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

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

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


我一整天都在面临同样的问题,我尝试了所有可能的
ODBC驱动程序

conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};'
                      'SERVER=YourServerName;'
                      'DATABASE=YourDatabaseName;UID=USER_NAME;PWD=PASS_WORD;')
代替
Driver={SQL Server}
我们可以一个接一个地尝试这些选项,或者您可以使用相应的设置,在我的情况下,最后一个选项可以工作:)


您需要下载用于SQL Server的Microsoft ODBC驱动程序13

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

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

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

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
连接到Ms 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;')


确保已安装所有驱动程序和db引擎


可能与您在此处所写的相同,但我仍然会遇到与提问者相同的错误。出于某种原因,我的错误正好相反。所以我建议两种方法都试一下。@bernando_vialli你能看看我下面的答案吗,我只是把所有可以选择的选项都放在适当的位置,顺便说一句,我不完全确定数据源名称应该看哪个选项卡。这让我找到了我的答案,因为我有一个教程中的“{SQL Server Native Client 11.0}”,而我的只使用了“{SQL Server}”。“不要在连接字符串中的Driver关键字后加空格。“这个对我有用。。一开始我很困惑,到底出了什么问题…-)+为此,我在没有空间的Windows上仍然收到此错误消息。@AdrianKeister-此错误消息可能有许多不同的原因。请使用一个@GordThompson,我发现了我的错误:在Windows上,您需要使用
{SQL SERVER}
驱动程序。因此,现在我检查
os.platform
字符串,并相应地使用正确的连接字符串。@Adriankeester-很高兴听到您让它工作了。但是,请注意,Windows附带的
{SQL Server}
驱动程序非常古老(大约是SQL Server 2000),在使用当前版本的SQL Server时可能会受到限制。微软现在为Windows、Mac和(至少是某些风格的)Linux维护现代ODBC驱动程序
SQL Server的ODBC驱动程序17
是当前最新的。@Aravind30790如果有帮助,请投票支持此解决方案。谢谢是的,这很奇怪,我做的和“@Avnish alok”一样,而且很有效。我想我们只需要尝试不同的驱动程序={xxx},直到它工作为止。我正在连接下面的SQL Server“Microsoft 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
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;')

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