我正在使用 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上打印数据库的名称。我能够看到我想要连接的数据库。任何人都知道我的源代码出了什么问题?
答案 0 :(得分:1)
通常,我会假设连接字符串在您的情况下需要不同。 根据pyodbc docs:
[...]最重要的是要记住pyodbc甚至不看连接字符串。它未经修改直接传递给数据库驱动程序(通过SQLDriverConnect)。因此,连接字符串是特定于驱动程序的,并且所有ODBC连接字符串文档都应该有效。
https://github.com/mkleehammer/pyodbc/wiki/Connecting-to-databases
但是,由于 连接到db OK并且您的连接字符串似乎被忽略,我会说如果您使用的是Windows,那么连接参数似乎可能在ODBC DSN中定义,可在控制面板中更改。如果是这种情况,并且您在DSN中定义了ODBC参数,则除了选择DSN之外,很可能忽略您的连接字符串。