【问题标题】:Which python ORM could return an object?哪个 python ORM 可以返回一个对象?
【发布时间】:2016-03-04 08:53:49
【问题描述】:

我现在正在学习 sqlalchemy,原始 sql 执行如下:

class Qblvpool(object):
    def __init__(self):
        self.name = "hhe"
        self.size = 0
        self.createtime = datetime.now()


metadata = MetaData()
qblvpool = Table('qb_lv_pool', metadata,
                 Column('id', Integer, primary_key=True),
                 Column('name', String(128)),
                 Column('size', Integer),
                 Column('createtime', DateTime))

mapper(Qblvpool, qblvpool)

engine =     create_engine('postgresql+psycopg2://username:password@ip:5432/postgres', echo=True)
Session = sessionmaker(bind=engine)
session = Session()
result = session.execute('select * from qb_lv_pool', mapper=Qblvpool)
row = result.fetchone()
print row.name

它工作得很好。但我希望该行成为 Qblvpool 的一个实例,就像 ibatis 在 java 中所做的那样。

我怎样才能做到这一点或哪个 python ORM 支持它?

【问题讨论】:

    标签: python orm sqlalchemy


    【解决方案1】:

    这在Using Textual SQL 下的文档中有所描述:

    session.query(Qblvpool).from_statement(text('select * from qb_lv_pool')).all()
    

    【讨论】:

    • 太棒了!这就是我需要的!谢谢!
    • @user3323381 如果它解决了您的问题,请接受答案。谢谢!
    【解决方案2】:

    使用 session.query 代替 session.execute

    session.query(Qblvpool).all()
    

    【讨论】:

    • ... 这样您就可以在没有 ORM 的情况下进行操作。
    • 不......他喜欢连接池......我会先尝试 univerio 的答案,非常感谢你的回复!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 2015-06-06
    相关资源
    最近更新 更多