到目前为止我的代码:
from db_declarative import Base, OwnershipDocument
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
engine = create_engine('postgresql://iswdp:password@localhost/my_db')
Base.metadata.bind = engine
DBSession = sessionmaker()
DBSession.bind = engine
session = DBSession()
q_all = session.query(tablename).first()
从q_all我可以使用q_all.columnName打印单个值。如何打印所有这些?简单的方式似乎应该是这样的:
for i in q_all:
print(i)
但只是说对象不可迭代。
答案 0 :(得分:2)
有多种方式,有点不同。
您可以从映射对象的__table__
属性中获取此信息,例如:
In [2]: obj.__table__.columns.keys()
Out[2]:
['id',
'email',
'username',
'password',
'active']
In [3]: obj.__table__.columns.values()
Out[3]:
[Column('id', Integer(), table=<users>, primary_key=True, nullable=False),
Column('email', String(length=255), table=<users>, nullable=False),
Column('username', String(length=64), table=<users>, nullable=False),
Column('password', String(length=128), table=<users>),
Column('active', Boolean(), table=<users>, nullable=False, server_default=DefaultClause('0', for_update=False))]
您还可以查看__dict__
属性以查看当前加载的属性。请注意,这也将显示非列的属性。
In [4]: obj.__dict__
Out[4]:
{'_sa_instance_state': <sqlalchemy.orm.state.InstanceState at 0x7fb04df6b470>,
'active': True,
'email': 'test@example.com',
'id': 3,
'username': 'test'}