pyodbc始终连接到master数据库

时间:2018-03-13 15:21:04

标签: python sql-server odbc azure-sql-database pyodbc

我正在使用 pyodbc 连接到azure sql数据库。我的源代码如下所示:

import pyodbc

server = 'sqlserver.database.windows.net'
database = 'database'
username = 'username'
password = 'password'

conn= pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server}'+';SERVER='+server+';PORT=1443;DATABASE='+database+';UID='+username+';PWD='+ password ';Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;')
cursor = conn.cursor()
cursor.execute("query")

我能够连接到SQL数据库。唯一不能正常工作的是pyodbc没有连接到我在database变量中指定的数据库。它始终连接到主数据库。

到目前为止,我所尝试的是在连接到master数据库时使用SELECT * FROM sys.databases在目标sql server上打印数据库的名称。我能够看到我想要连接的数据库。任何人都知道我的源代码出了什么问题?

1 个答案:

答案 0 :(得分:1)

通常,我会假设连接字符串在您的情况下需要不同。 根据pyodbc docs:

  

[...]最重要的是要记住pyodbc甚至不看连接字符串。它未经修改直接传递给数据库驱动程序(通过SQLDriverConnect)。因此,连接字符串是特定于驱动程序的,并且所有ODBC连接字符串文档都应该有效。

https://github.com/mkleehammer/pyodbc/wiki/Connecting-to-databases

但是,由于 连接到db OK并且您的连接字符串似乎被忽略,我会说如果您使用的是Windows,那么连接参数似乎可能在ODBC DSN中定义,可在控制面板中更改。如果是这种情况,并且您在DSN中定义了ODBC参数,则除了选择DSN之外,很可能忽略您的连接字符串。