Python 在SQLAlchemy中选择*?

Python 在SQLAlchemy中选择*?,python,sqlalchemy,Python,Sqlalchemy,可以在SQLAlchemy中执行SELECT*吗 具体来说,选择*WHERE foo=1?如果您没有列出任何列,那么您将获得所有列 query = users.select() query = query.where(users.c.name=='jack') result = conn.execute(query) for row in result: print row 应该有用。事实证明你可以做到: sa.select('*', ...) 今天没有人感受到炼金术的爱吗?给出的答

可以在SQLAlchemy中执行SELECT*吗


具体来说,选择*WHERE foo=1?

如果您没有列出任何列,那么您将获得所有列

query = users.select()
query = query.where(users.c.name=='jack')
result = conn.execute(query)
for row in result:
    print row
应该有用。

事实证明你可以做到:

sa.select('*', ...)

今天没有人感受到炼金术的爱吗?给出的答案正确地描述了SQLAlchemy提供的低级接口。为了完整起见,对于我来说,在现实世界中,更可能出现这样的情况:您有一个会话实例和一个orm映射到users表的用户类

for user in session.query(User).filter_by(name='jack'):
     print user
     # ...
这会对所有列进行显式选择。

其中Bar是映射到表的类,session是sa会话:

bars = session.query(Bar).filter(Bar.foo == 1)

如果您使用的是ORM,则可以使用普通ORM构造构建查询,然后直接执行以获取原始列值:

query = session.query(User).filter_by(name='jack')
for cols in session.connection().execute(query):
    print cols

您也可以始终使用原始SQL:

str_sql = sql.text("YOUR STRING SQL")
#if you have some args:
args = {
    'myarg1': yourarg1
    'myarg2': yourarg2}
#then call the execute method from your connection
results = conn.execute(str_sql,args).fetchall()

对于未手动定义列的联接,只返回目标表的列。要获取joinsUser表与Group表联接的所有列,请执行以下操作:

sql=User.selectfrom_objGroup,User.c.group_id==group.c.id 添加要选择的组表的所有列 sql=sql.columnGroup session.connection.executesql
以下选择适用于返回a的核心表达式语言:


如果我想要WHERE子句呢?添加了WHERE类的内容。您应该查看以获得更好的建议。@S.Lott该链接已过期。对于我来说,我遇到了一个操作错误。省略where部分,我可以看到strquery给出了“SELECT\n from trials”。它缺少星号。我想mike问SELECT*的原因是为了得到一系列列值。使用ORM的完整解决方案是获取上述用户对象,然后找到一种在列上进行迭代的方法,如中所述。如果我加入两个模型并希望得到所有列,该怎么办?如果Select*from在子查询中,该怎么办?如果您已经有一个用于获取查询的会话对象,为什么要使用连接的execute?您可以只为查询中的用户执行以下操作:打印user.name、user.agehmm。。这对我不起作用,但用[sqlalchemy.text'*']替换['*']起作用。我如何将查询的结果jsonify化?
foo_col = sqlalchemy.sql.column('foo')
s = sqlalchemy.sql.select(['*']).where(foo_col == 1)