![](/img/trans.png)
[英]Sqlalchemy cx_Oracle create_engine: cannot set arraysize
[英]sqlalchemy cx_oracle cannot get results
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())
追溯(最近一次調用):TypeError中的文件“”,第1行:'int'對象不可調用錯誤關閉光標追溯:追溯(最新調用最后一次):AttributeError:'cx_Oracle.Cursor'對象沒有屬性'lastrowid'
首先,rowcount是一個attribute ,因此您可以通過以下方式使用:
print(result.rowcount)
但是它將返回0。 為什么 ?
因為僅在UPDATE或DELETE語句中有用。 與Python DBAPI所說的相反,它不返回SELECT語句的結果中可用的行數,因為在對行進行無緩沖時,DBAPI不支持此功能。
如何獲得SELECT語句的行數?
您可以按以下方式用COUNT 選擇 :
result = connection.execute(tbl_mgr_theater.select().count())
它將返回一個ResultProxy。 但是,如果您想要一個int結果,則可以執行以下操作:
result=[x for x in connection.execute(tbl_mgr_theater.select().count())][0][0]
如您所知,這是一條SELECT COUNT語句(它只會返回一個字段),您可以將第一個[0]設置為第二個,將RowProxy解析為int。
希望對您有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.