繁体   English   中英

如何使用 create_engine() 在 SQLAlchemy 和 cx_Oracle 中设置模块名称?

[英]How to set module name in SQLAlchemy and cx_Oracle with create_engine()?

在 SQLAlchemy 中,我创建了一个引擎:

engine = create_engine(url="oracle+cx_oracle://user:xxxx@tns")

在 cx_Oracle 中,我将创建一个连接:

conn = cx_Oracle.connect(user="user", password="xxxx", dsn="tns")

然后我可以使用Connection.module属性设置模块,该属性在查看 v$session 表时适当标记。

conn.module = "MyModule"

有没有办法到Oracle会话模块名称设置为sqlalchemy.engine.Engine一旦其与创建create_engine

我最终使用了DialectEvents.do_connect() 钩子,这对我来说效果很好。

import cx_Oracle
from sqlalchemy import create_engine, event


engine = create_engine(url="oracle+cx_oracle://user:xxxx@tns")
@event.listens_for(engine, "do_connect")
def receive_do_connect(dialect, conn_rec, cargs, cparams):
    """listen for the 'do_connect' event"""
    connection = cx_Oracle.connect(*cargs, **cparams)
    connection.module = "MyModule"
    return connection

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM