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