- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
假设您有一个简单的 SQLAlchemy 映射对象,如下所示:
class User(Base):
__tablename__ = 'users'
id = sqlalchemy.Column(sqlalchemy.Integer, autoincrement=True,primary_key=True)
name = sqlalchemy.Column(sqlalchemy.Unicode(255), unique=True, nullable=False)
email = sqlalchemy.Column(sqlalchemy.Unicode(255), nullable=False)
address = sqlalchemy.Column(sqlalchemy.Unicode(255), nullable=False)
创建用户:
sess.add(User(name=u'One', email=u'one@example.com', address='An address'))
sess.add(User(name=u'Two', email=u'two@example.com', address='An address'))
sess.add(User(name=u'Three', email=u'three@example.com', address='An address'))
你可以查询这三个用户:
1.)
sess.query(User).all()
[<__main__.User object at 0x2fb9790>, <__main__.User object at 0x2fb9810>, <__main__.User object at 0x2fb9890>]
这会为您提供一个用户对象列表。
2.)
sess.query(User.id, User.name, User.email, User.address).all()
[(1, u'one@example.com', u'An address'), (2, u'two@example.com', u'An address'), (3, u'three@example.com', u'An address')]
它为您提供了一个 KeyedTuple 对象列表,您可以在其中通过属性名称引用字段,例如 sess.query(User.id, User.name, User.email, User.address).all()[0].name
3.)
sess.execute(sess.query(User)).fetchall()
[(1, u'One', u'one@example.com', u'An address'), (2, u'Two', u'two@example.com', u'An address'), (3, u'Three', u'three@example.com', u'An address')]
它为您提供了一个 RowProxy 对象列表,您可以在其中引用 sess.execute(sess.query(User)).fetchall()[0]['users_name'] 等字段。
我的问题是,是否有一种简单的方法可以获取第二个查询示例的结果而不必列出用户类的所有属性,或者是否有一种方法可以使用键来获取第三个查询的结果'name' 而不是 'users_name',因此与 User 类中的属性名称相同。
所以基本上我需要的是一个包含 User 类的所有列属性的对象,并且可以像 res.name 或 res['name'] 一样引用这些属性。所以我只需要属性而不是整个用户对象和所有其他东西。
这将使遍历属性的迭代变得非常容易,因为例如你可以说 res.keys()。
我希望我的问题很清楚。我看到这与 User 实例非常相似,但仍然不一样。
首选的解决方案是 KeyedTuple,因此无需显式列出属性。
提前致谢。
最佳答案
我不确定您的目标是什么,但您是否正在尝试处理动态列数据?可能存在其他方法,但您始终可以将表列解压缩为查询参数,如下所示:
>>> user_columns = User.__table__.columns
>>> sess.query(*user_columns).all() # unpack user_columns into arguments
[(1, u'One', u'one@example.com', u'An address'), (2, u'Two', u'two@example.com', u'An address'), (3, u'Three', u'three@example.com', u'An address')]
关于python - Sqlalchemy 将结果作为 KeyedTuple 而不是映射对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23313152/
我有一个 SQLAlchemy KeyedTuple有几个领域。我想要一个元组(或者,如果可能的话,一个 KeyedTuple)及其所有字段,除了其中两个我知道名字的字段。 目前我有以下代码,通过排除
假设您有一个简单的 SQLAlchemy 映射对象,如下所示: class User(Base): __tablename__ = 'users' id = sqlalchemy.Co
我有以下两个问题 res=session.query(t_marketing_mailing_stats_tbl).filter( t_marketing_mailing_stats_tbl.
我是 Python 新手,正在探索 SQLAlchemy。这是我的代码 class Test(Base): __tablename__ = 'test' __public__ =
我是一名优秀的程序员,十分优秀!