python - 如何将 SQLAlchemy 行对象转换为 Python 字典?

有没有一种简单的方法来迭代列名和值对?

我的 SQLAlchemy 版本是 0.5.6

这是我尝试使用 dict(row) 的示例代码:

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)

在我的系统输出上运行此代码:

Traceback (most recent call last):
  File "untitled-1.py", line 37, in <module>
    print dict(u)
TypeError: 'User' object is not iterable

最佳答案

您可以访问 SQLAlchemy 对象的内部 __dict__,如下所示:

for u in session.query(User).all():
    print u.__dict__

https://stackoverflow.com/questions/1958219/

相关文章:

linux - chmod 777 到一个文件夹和所有内容

python - 如何获取方法参数名称?

python - 我应该在 Python 中使用 "camel case"还是下划线?

python - Python 和 IPython 有什么区别?

linux - 如何让 cp 命令创建任何必要的文件夹以将文件复制到目标

linux - 在 Linux 系统上快速创建大文件

python - 从第 2 行读取文件或跳过标题行

linux - 使用 cURL 执行 HTTP 请求(使用 PROXY)

linux - 如何从 shell 将一个文件 append 到 Linux 中的另一个文件?

linux - 如果任何命令返回非零值,则中止 shell 脚本