sqlalchemy + cx_Oracle可能不在您的域中。 但是,如果您能帮助我,提供很少的Web链接/帮助会很好。
from sqlalchemy import create_engine
from sqlalchemy import MetaData
from sqlalchemy import Table
import cx_Oracle
engine = create_engine('oracle+cx_oracle://user:passwd@FTSDBLAB')
meta = MetaData()
meta.reflect(bind=engine)
tbl_mgr_theater = Table('mgr_table', meta, autoload=True, autoload_with=engine)
connection = engine.connect()
result = connection.execute(tbl_mgr_theater.select())
print(result.rowcount())
回溯(最近通话最近): 文件“”,第1行,位于 TypeError:“ int”对象不可调用 关闭游标时出错 追溯(最近一次通话): AttributeError:“ cx_Oracle.Cursor”对象没有属性“ lastrowid”
答案 0 :(得分:0)
首先,rowcount是一个属性,因此您可以通过以下方式使用它:
print(result.rowcount)
但是它将返回0。为什么?
因为仅在 UPDATE 或 DELETE 语句中有用。与Python DBAPI所说的相反,它不会从 SELECT 语句的结果中返回可用的行数,因为当行未缓冲时,DBAPI无法支持此功能。
如何获取 SELECT 语句的行数?
您可以通过以下方式对 COUNT 进行 SELECT :
result = connection.execute(tbl_mgr_theater.select().count())
它将返回一个ResultProxy。但是,如果您想要一个整数结果,则可以执行以下操作:
result=[x for x in connection.execute(tbl_mgr_theater.select().count())][0][0]
您知道的是 SELECT COUNT 语句(它将仅返回一个字段),您可以设置第一个 [0] ,第二个是解析RowProxy诠释。
希望它对您有帮助。