首页 > 解决方案 > SQLAlchemy - 会话返回值,游标不

问题描述

每当我通过会话连接到我的数据库时,它都会返回预期值。但是,光标命令似乎不会返回任何值。

这是我的样板:

import pprint, sqlalchemy as db
from sqlalchemy.orm import sessionmaker
from models import Event

database = 'sandbox_test'
engine = db.create_engine('mysql+mysqlconnector://user:pass!!@localhost:3306/'+database+'?charset=utf8')

这是我的“会话”块:

Session = sessionmaker(bind=engine)
session = Session()
results = session.query(Event).first()
pprint.pprint(results.emp_id)

它返回firstname_lastname


这是我的“光标”块:

conn = engine.raw_connection()
curs = conn.cursor()
curs.execute('select * from events limit 100;',multi=True)
results = curs.fetchone()
pprint.pprint(results)

它返回None

我如何错误地格式化光标块?

标签: pythonmysqlpython-3.xormsqlalchemy

解决方案


您需要遍历光标,然后遍历该结果,如下所示:

conn = engine.raw_connection()
curs = conn.cursor()

for res in curs.execute("""SELECT * FROM test;SELECT * FROM test;""", multi=True):
    for row in res:
        print(row)

这基于此处的 MySQL 连接器文档。对于原始连接操作,您需要参考特定的 DB-API 驱动程序文档作为精确的 API,并且调用约定往往与驱动程序和 RDBMS 不同。SQLAlchemy 文档仅在这些情况下提供一般指导。


推荐阅读