Apakah ada cara sederhana untuk beralih pada pasangan nama dan nilai kolom?
Versi saya dari sqlalchemy adalah 0.5.6
Berikut adalah contoh kode tempat saya mencoba menggunakan dict (baris), tetapi ia melempar pengecualian, TypeError: objek 'Pengguna' tidak dapat diubah
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)
Menjalankan kode ini pada output sistem saya:
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
yang merupakan objek baris dari judul pertanyaan. Namun kueri dalam pertanyaan menggunakan kelas model (dipetakan) sehingga jenis objek baris adalah kelas model, bukansqlalchemy.util.KeyedTuple
.