sqlalchemy,用DSN指定数据库名称

2024-05-19 03:40:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用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")


Tags: 数据库sqlserversqlalchemylinuxcreatesomethis
2条回答

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

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

这也将使数据库能够通过几个事务/会话持久化。在

我刚试过这样的方法,效果很好

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

一般来说,在建立连接后,我们应该小心更改当前目录(又称“数据库”),因为有些技术(例如JDBC Connection对象)会跟踪当前目录,如果我们直接在T-SQL中调用USE ...来更改当前目录,可能会混淆。但是,我不知道pyodbc的Connection对象是否会进行任何这样的缓存,所以这种方法可能还可以。在

相关问题 更多 >

    热门问题