【问题标题】:Getting raw psycopg2 cursor object from a SQLAlchemy session object从 SQLAlchemy 会话对象获取原始 psycopg2 游标对象
【发布时间】:2021-05-01 09:07:24
【问题描述】:

我正在使用它创建一个会话对象

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

maiden_engine = create_engine(connection_url)
session = sessionmaker(maiden_engine)
connector = session()

现在对于某个用例,我想从这个connector对象中得到pyscopg2cursor对象,有没有办法可以实现这种转换?

这是您通常创建光标对象的方式

import psycopg2
conn = psycopg2.connect(host, port, database, user, password, sslmode)
cursor = conn.cursor()

请注意,这个对话HAS是由第一个代码sn-p最后一行中的connector对象进行的,我不能使用maiden_engine或其他任何东西。

【问题讨论】:

  • 也许crsr = connector.bind.raw_connection().cursor() ...?
  • 嗨@GordThompson 嗨谢谢,它有效!您能否将其发布在您如何达到此解决方案的答案中,以便我接受?另外,如果您认为这个问题值得,请投票让其他人轻松找到它。

标签: python-3.x postgresql sqlalchemy psycopg2


【解决方案1】:

在您的情况下,connector 变量是 <class 'sqlalchemy.orm.session.Session'> 对象。 Session 对象有一个 .bind 属性,该属性返回与会话关联的 <class 'sqlalchemy.engine.base.Engine'>

Engine 对象有一个 .raw_connection() 方法,该方法返回(代理)原始 DBAPI 连接,并调用 .cursor() 返回原始 DBAPI Cursor 对象。因此,

crsr = connector.bind.raw_connection().cursor()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-05
    • 2014-02-06
    • 1970-01-01
    • 2014-08-05
    • 2017-05-04
    • 2019-01-10
    • 2013-08-26
    相关资源
    最近更新 更多