【发布时间】:2020-10-08 15:21:12
【问题描述】:
我正在尝试通过 sqlalchemy 连接到 SQL Server 2019。我同时使用 mssql+pyodbc 和 msql+pyodbc_mssql,但在这两种情况下它都无法连接,总是返回未定义的 default_schema_name。 已检查数据库、定义的用户架构和所有内容。
例子:
from sqlalchemy import create_engine
import urllib
from sqlalchemy import create_engine
server = 'server'
database = 'db'
username = 'user'
password = 'pass'
#cnxn = 'DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password+';Trusted_Connection=yes'
cnxn = 'DSN=SQL Server;SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password+';Trusted_Connection=yes'
params = urllib.parse.quote_plus(cnxn)
engine = create_engine('mssql+pyodbc:///?odbc_connect=%s' % params)
cnxn = engine.connect()
返回无,方言.default_schema_name
AttributeError: 'MSDialect_pyodbc' 对象没有属性 'default_schema_name'
TIA.....
【问题讨论】:
-
你解决了这个问题吗?
-
不。显然 SQL 服务器的方言不正确,它不起作用。
-
我确实最终得到了这个设置,想要我发布答案吗?
-
愿意。我尝试了很多方法,sqlalchemy 似乎永远无法与 SQL server 2019 正确对话。
-
Righto,下面发布的示例。取自工作脚本。最好的提示是确保您安装了适用于 SQL 服务器的 Microsoft ODBC 驱动程序,而不仅仅是 pyodbc。第 17 版对我有用。
标签: python sql-server sqlalchemy sql-server-2019