Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用pyodbc从MSSQL获取数据时为什么会出现此错误?_Python_Sql Server_Pyodbc - Fatal编程技术网

Python 使用pyodbc从MSSQL获取数据时为什么会出现此错误?

Python 使用pyodbc从MSSQL获取数据时为什么会出现此错误?,python,sql-server,pyodbc,Python,Sql Server,Pyodbc,我正在使用pyodbc从MSSQL检索数据,这是我正在使用的代码: import pyodbc server = 'xxxxxxxx\DEV' database = 'SandBox' username = 'zzzzzzz' password = 'xxxxxxx' driver = '{SQL Server}' cnxn = pyodbc.connect('DRIVER='+driver+';PORT=4853;SERVER='+server+';PORT=4853;DATABASE='+

我正在使用pyodbc从MSSQL检索数据,这是我正在使用的代码:

import pyodbc
server = 'xxxxxxxx\DEV'
database = 'SandBox'
username = 'zzzzzzz'
password = 'xxxxxxx'
driver = '{SQL Server}'

cnxn = pyodbc.connect('DRIVER='+driver+';PORT=4853;SERVER='+server+';PORT=4853;DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
cursor.execute("select * from fieldscreenscheme ")
row = cursor.fetchone()
if row:
    print row
这是我得到的错误信息:

cnxn = pyodbc.connect('DRIVER='+driver+';PORT=43853;SERVER='+server+';PORT=43853;DATABASE='+database+';UID='+username+';PWD='+ password)

pyodbc.Error: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied. (17) (SQLDriverConnect); [01000] [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()). (53); [01S00] [Microsoft][ODBC SQL Server Driver]Invalid connection string attribute (0)')
我安装了ODBC驱动程序。有没有建议如何解决这个错误? 我看了这两个,但没有帮助我解决这个问题。
Microsoft文档:

两个问题:

  • 通常,一个提供
    \INSTANCENAME
    端口号,而不是两者都提供
  • SQL Server的ODBC连接字符串不使用
    端口=
    ,它们将端口号放在
    服务器=
    参数中,例如
    服务器=xxxxxxxx,43853
    。(请注意,实例名称被省略,分隔符是逗号,而不是冒号。)

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

    而不是

    driver = '{SQL Server}'
    

    我一整天都在面对同样的问题,我尝试了SQL Server的所有可能的
    ODBC驱动程序
    ,下面是列表,我只是一个接一个地尝试,它对我有效

    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
    
    这些是其他一些我们可以使用的,在我的例子中,最后一个是有效的:)


    但它没有任何其他建议?您使用的是哪个版本的pyodbc?我使用了4.0.26,我必须做与您的答案完全相反的事情。执行环境下的pyodbc版本可能是4.0.23,但我不确定。@Eswar您能看到我下面的答案吗,
    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