首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >sqlalchemy,使用DSN指定数据库名称

sqlalchemy,使用DSN指定数据库名称
EN

Stack Overflow用户
提问于 2017-08-03 02:40:42
回答 2查看 5.2K关注 0票数 5

我正在尝试使用sqlalchemy从Linux连接到SQL Server。This page显示基于DSN的连接,如下所示。

engine = create_engine("mssql+pyodbc://scott:tiger@some_dsn")

有没有办法使用DSN指定数据库名称?我知道我们可以在odbc.ini或SQL查询中指定数据库名称,但我想知道我们是否也可以这样做。

engine = create_engine("mssql+pyodbc://scott:tiger@some_dsn/databasename")

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-14 00:10:38

您可以通过create_engine中的connect_args参数将参数直接传递给pyodbc.connect方法:

代码语言:javascript
运行
复制
def my_create_engine(mydsn, mydatabase, **kwargs):
    connection_string = 'mssql+pyodbc://@%s' % mydsn
    cargs = {'database': mydatabase}
    cargs.update(**kwargs)
    e = sqla.create_engine(connection_string, connect_args=cargs)
    return e

这还将使数据库能够在多个事务/会话中持久化。

票数 6
EN

Stack Overflow用户

发布于 2017-08-04 01:37:26

我刚试过这样的方法,它似乎工作得很好

代码语言:javascript
运行
复制
engine = create_engine("mssql+pyodbc://scott:tiger@some_dsn")
with engine.begin() as conn:
    conn.execute("USE databasename")

作为一般规则,我们应该小心更改当前目录(也称为“数据库”),因为某些技术(例如,JDBC对象)会跟踪当前编目,如果我们直接在T- Connection中调用USE ...来更改当前编目,可能会产生混乱。然而,我不知道pyodbc的Connection对象做任何这样的缓存,所以这种方法可能是可以的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45468623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档