sqlalchemy cx_oracle 无法获取结果
sqlalchemy cx_oracle cannot get results
sqlalchemy+cx_Oracle 可能不在您的域中。
不过,如果你能帮我给几个网站 links/helps 就好了。
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 行,位于
类型错误:'int' 对象不可调用
关闭游标时出错
追溯(最近一次通话):
AttributeError: 'cx_Oracle.Cursor' 对象没有属性 'lastrowid'
首先,rowcount是一个属性,所以你应该这样使用:
print(result.rowcount)
但它会 return 0。为什么?
Because 仅在 UPDATE 或 DELETE 语句中有用。与 Python DBAPI 所说的相反,它不会 return SELECT 语句结果中可用的行数,因为 DBAPI 无法支持当行未缓冲时此功能。
如何获取 SELECT 语句的行数?
您可以 SELECT 和 COUNT 这样:
result = connection.execute(tbl_mgr_theater.select().count())
它将return 一个ResultProxy。但是如果你想要一个 int 结果,你可以这样做:
result=[x for x in connection.execute(tbl_mgr_theater.select().count())][0][0]
如你所知,这是一个 SELECT COUNT 语句(它只会 return 一个字段),你可以设置第一个 [0],二是将RowProxy解析为int.
希望对你有帮助。
sqlalchemy+cx_Oracle 可能不在您的域中。 不过,如果你能帮我给几个网站 links/helps 就好了。
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 行,位于 类型错误:'int' 对象不可调用 关闭游标时出错 追溯(最近一次通话): AttributeError: 'cx_Oracle.Cursor' 对象没有属性 'lastrowid'
首先,rowcount是一个属性,所以你应该这样使用:
print(result.rowcount)
但它会 return 0。为什么?
Because 仅在 UPDATE 或 DELETE 语句中有用。与 Python DBAPI 所说的相反,它不会 return SELECT 语句结果中可用的行数,因为 DBAPI 无法支持当行未缓冲时此功能。
如何获取 SELECT 语句的行数?
您可以 SELECT 和 COUNT 这样:
result = connection.execute(tbl_mgr_theater.select().count())
它将return 一个ResultProxy。但是如果你想要一个 int 结果,你可以这样做:
result=[x for x in connection.execute(tbl_mgr_theater.select().count())][0][0]
如你所知,这是一个 SELECT COUNT 语句(它只会 return 一个字段),你可以设置第一个 [0],二是将RowProxy解析为int.
希望对你有帮助。