SQLAlchemy - 会话 returns 值,游标不
SQLAlchemy - session returns values, cursor does not
每当我通过会话连接到我的数据库时,它 return 就是预期值。但是,游标命令不会出现 return 任何值。
这是我的样板:
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)
它 returns firstname_lastname
.
这是我的“光标”块:
conn = engine.raw_connection()
curs = conn.cursor()
curs.execute('select * from events limit 100;',multi=True)
results = curs.fetchone()
pprint.pprint(results)
它 returns 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 连接器文档 here。对于原始连接操作,您需要参考特定的 DB-API 驱动程序文档,因为精确的 API 和调用约定往往会因驱动程序和 RDBMS 而异。 SQLAlchemy 文档仅在这些情况下提供一般指导。
每当我通过会话连接到我的数据库时,它 return 就是预期值。但是,游标命令不会出现 return 任何值。
这是我的样板:
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)
它 returns firstname_lastname
.
这是我的“光标”块:
conn = engine.raw_connection()
curs = conn.cursor()
curs.execute('select * from events limit 100;',multi=True)
results = curs.fetchone()
pprint.pprint(results)
它 returns 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 连接器文档 here。对于原始连接操作,您需要参考特定的 DB-API 驱动程序文档,因为精确的 API 和调用约定往往会因驱动程序和 RDBMS 而异。 SQLAlchemy 文档仅在这些情况下提供一般指导。