pyodbc 始终连接到 master 数据库

pyodbc always connects to master database

我正在使用 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 服务器上打印数据库的名称。我能够看到我正在尝试连接的数据库。有人知道我的源代码出了什么问题吗?

一般来说,我假设您的连接字符串需要有所不同。 根据 pyodbc 文档:

[...]the most important thing to remember is that pyodbc does not even look at the connection string. It is passed directly to the database driver unmodified (through SQLDriverConnect). Connection strings are therefore driver-specific and all ODBC connection string documentation should be valid.

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

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