是否可以从 sql alchemy 会话中检索引擎值

Kin*_*ngz 24 python sqlalchemy

首先我创建一个会话如下:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
some_engine = create_engine('my_engine_string')
Session = sessionmaker(bind=some_engine)
session = Session()
Run Code Online (Sandbox Code Playgroud)

然后我将此会话作为参数发送给方法

def example(session):
    print("you created a session!")
Run Code Online (Sandbox Code Playgroud)

是否可以some_engine从方法session内部获取的值example?没有实际传递some_enginemy_engine_stringexample方法。

如下:

def example(session):
   print("you created a session!")
   engine = <using session get the value of `some_engine`>
   print("the engine is retrieved from session")
Run Code Online (Sandbox Code Playgroud)

Fyn*_*ker 29

Sessions 具有.get_bind()在您的情况下将返回您的Engine实例的方法。

相关摘录自sqlalchemy docs

返回绑定到的“绑定” Session

“绑定”通常是 的实例Engine,除非Session已经明确地直接绑定到Connection

因此,您的example()函数可以执行以下操作:

def example(session):
   print("you created a session!")
   engine = session.get_bind()
   print("the engine is retrieved from session")
Run Code Online (Sandbox Code Playgroud)