我如何使用sqlalchemy create_engine()与包括 @

问题描述 投票:0回答:1

这不是

cn_string = "mssql+pyodbc://someuser:"fancy&password"@172.30.0.194/db?driver=SQL+Server+Native+Client+11.0" return create_engine(cn_string)
这两个都不是:

driver = "SQL Server Native Client 11.0" server = "192.30.0.194" database = "EPM_Dashboard" uid = "someuser" pwd = "fancy@password" params = f'DRIVER={{{driver}}};SERVER={server};DATABASE={database};UID={uid};PWD={{{pwd}}};' connection_string = 'mssql+pyodbc:///?odbc_connect=%s' % urllib.parse.quote_plus(params) return create_engine(connection_string)
我得到了类似的东西:

login超时过期(0); [08001] [Microsoft] [SQL Server本地客户端11.0]在建立与SQL Server的连接时,已经发生了与网络相关或特定于实例的错误。服务器未找到或无法访问。检查实例名称是否正确,以及是否配置了SQL Server以允许远程连接。有关更多信息,请参见在线SQL Server书籍。 (53)
如果PYODBC项目失败,这将是更可信的。

这里是另一个失败:

return create_engine(urllib.parse.quote_plus('driver={SQL Server Native Client 11.0}; server=172.30.0.194; database=EPM_Dashboard;uid=someuser; pwd=fancy@password'))

我确定我缺少的地方有一个棘手的角色。

这里是一些资源

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

SQL密码中的特定字符

sqlalchemy等于PyoDBC连接字符串使用freetds

如果您需要构建一个可能具有“有趣字符”的连接URL,则可以使用

URL.CREATE()

为您构建它: import sqlalchemy as sa connection_url = sa.URL.create( "mssql+pyodbc", username="someuser", password="fancy@password", host="192.30.0.194", database="EPM_Dashboard", query={"driver": "SQL Server Native Client 11.0"}, ) engine = sa.create_engine(connection_url)

对于那些好奇的人,URL的弦乐版本为 print(connection_url.render_as_string(hide_password=False)) # mssql+pyodbc://someuser:fancy%[email protected]/EPM_Dashboard?driver=SQL+Server+Native+Client+11.0

python sql-server sqlalchemy pyodbc
1个回答
16
投票
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.