迭代sqlalchemy ORM记录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了迭代sqlalchemy ORM记录相关的知识,希望对你有一定的参考价值。
我有一个用sqlalchemy创建的sqlite数据表,我想在PyQt5 qtablewidget上表示。
def createTable(self, tableData):
self.qTable = session.query(tableData).all()
self.tableWidget = QTableWidget()
self.tableWidget.setRowCount(0)
self.tableWidget.setColumnCount(tableData.cols)
self.tableWidget.setHorizontalHeaderLabels(tableData.col_headers)
for row, form in enumerate(self.qTable):
self.tableWidget.setRowCount(row+1)
for col,record in enumerate(form):
self.tableWidget.setItem(row, col, QTableWidgetItem(record))
这打破了界限
for col,record in enumerate(form):
错误“TypeError:'Tests'对象不可迭代”
ORM是使用此代码构建的
class Tests(Base):
__tablename__ = 'tests'
id = Column(Integer, primary_key=True)
current = Column(Boolean)
temp = Column(Float)
brine = Column (Float)
test = Column(String)
pc = Column(Float)
wait_time = Column(Integer)
headers = {"current","temp","brine","test","pc","wait time"}
有没有办法使这个可迭代?还是一个更简洁的处理方法?
答案
谢谢@SuperShoot,这对我来说非常好,这里是我使用的最终代码
for row, form in enumerate(self.qTable):
col = 0
self.tableWidget.setRowCount(row+1)
for c in columns:
for k,v in vars(form).items():
if k == c:
self.tableWidget.setItem(row, col, QTableWidgetItem(str(v)))
col +=1
我添加了额外的逻辑,所以我可以定义列顺序,
以上是关于迭代sqlalchemy ORM记录的主要内容,如果未能解决你的问题,请参考以下文章
SQLAlchemy ORM 一对多关系未从数据库加载所有记录