从 SQLAlchemy 会话对象获取原始 psycopg2 游标对象
Getting raw psycopg2 cursor object from a SQLAlchemy session object
我正在使用这个创建会话对象
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
maiden_engine = create_engine(connection_url)
session = sessionmaker(maiden_engine)
connector = session()
现在对于某个用例,我想从这个connector
对象中得到pyscopg2
cursor
对象,有没有办法可以实现这种转换?
这就是您通常创建游标对象的方式
import psycopg2
conn = psycopg2.connect(host, port, database, user, password, sslmode)
cursor = conn.cursor()
Note that this conversaion HAS to be made from connector
object in the last line of first code snippet, I can not use maiden_engine
or anything else.
在您的例子中,connector
变量是一个 <class 'sqlalchemy.orm.session.Session'>
对象。 Session
对象具有 .bind
属性,该属性 returns <class 'sqlalchemy.engine.base.Engine'>
与会话关联。
Engine
对象有一个 .raw_connection()
方法,该方法 returns (代理)原始 DBAPI 连接,并在该 returns 上调用 .cursor()
原始 DBAPI Cursor
对象。因此,
crsr = connector.bind.raw_connection().cursor()
我正在使用这个创建会话对象
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
maiden_engine = create_engine(connection_url)
session = sessionmaker(maiden_engine)
connector = session()
现在对于某个用例,我想从这个connector
对象中得到pyscopg2
cursor
对象,有没有办法可以实现这种转换?
这就是您通常创建游标对象的方式
import psycopg2
conn = psycopg2.connect(host, port, database, user, password, sslmode)
cursor = conn.cursor()
Note that this conversaion HAS to be made from
connector
object in the last line of first code snippet, I can not usemaiden_engine
or anything else.
在您的例子中,connector
变量是一个 <class 'sqlalchemy.orm.session.Session'>
对象。 Session
对象具有 .bind
属性,该属性 returns <class 'sqlalchemy.engine.base.Engine'>
与会话关联。
Engine
对象有一个 .raw_connection()
方法,该方法 returns (代理)原始 DBAPI 连接,并在该 returns 上调用 .cursor()
原始 DBAPI Cursor
对象。因此,
crsr = connector.bind.raw_connection().cursor()