Có cách nào đơn giản để lặp lại các cặp giá trị và tên cột không?
Phiên bản sqlalchemy của tôi là 0,5,6
Đây là mã mẫu mà tôi đã thử sử dụng dict (hàng), nhưng nó ném ngoại lệ, đối tượng TypeError: 'Người dùng' không thể lặp lại được
import sqlalchemy
from sqlalchemy import *
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
print "sqlalchemy version:",sqlalchemy.__version__
engine = create_engine('sqlite:///:memory:', echo=False)
metadata = MetaData()
users_table = Table('users', metadata,
Column('id', Integer, primary_key=True),
Column('name', String),
)
metadata.create_all(engine)
class User(declarative_base()):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
def __init__(self, name):
self.name = name
Session = sessionmaker(bind=engine)
session = Session()
user1 = User("anurag")
session.add(user1)
session.commit()
# uncommenting next line throws exception 'TypeError: 'User' object is not iterable'
#print dict(user1)
# this one also throws 'TypeError: 'User' object is not iterable'
for u in session.query(User).all():
print dict(u)
Chạy mã này trên đầu ra hệ thống của tôi:
sqlalchemy version: 0.5.6
Traceback (most recent call last):
File "untitled-1.py", line 37, in <module>
print dict(u)
TypeError: 'User' object is not iterable
sqlalchemy.util.KeyedTuple
là đối tượng hàng từ tiêu đề của câu hỏi. Tuy nhiên, truy vấn trong câu hỏi sử dụng lớp mô hình (ánh xạ), do đó loại đối tượng hàng là lớp mô hình thay vìsqlalchemy.util.KeyedTuple
.