每当我用会话连接到数据库时,它都会返回期望的值。但是,光标命令似乎不会返回任何值。
这是我的样板:
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
。
我是如何错误地格式化光标块的?
您需要对光标进行迭代,然后对结果进行迭代,如下所示:
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文档仅在这些情况下提供一般指导。