Python SQLAlchemy:根据结果进行操作

Python SQLAlchemy:根据结果进行操作,python,sql,sqlalchemy,Python,Sql,Sqlalchemy,我试图做一些相对简单的事情,写出列名和相应的列值,并可能过滤掉一些列,这样它们就不会显示出来 这就是我所尝试的(当然,在初始连接之后): 我查看了SQLAlchemy(v.5)上的API,但感到相当困惑。“results”中的“result”是一个RowProxy,但我认为它没有为.items()调用返回正确的对象 假设我的表结构是这样的: user_id user_name user_password user_country 0 john

我试图做一些相对简单的事情,写出列名和相应的列值,并可能过滤掉一些列,这样它们就不会显示出来

这就是我所尝试的(当然,在初始连接之后):

我查看了SQLAlchemy(v.5)上的API,但感到相当困惑。“results”中的“result”是一个RowProxy,但我认为它没有为.items()调用返回正确的对象

假设我的表结构是这样的:

user_id    user_name    user_password    user_country
0          john         a9fu93f39uf      usa

我想筛选并指定要显示的列名(我不想明显地显示用户的密码)-我如何才能做到这一点?

您可以立即使用
结果作为迭代器

results = s.execute()

for row in results:
    print row
通过以下方式选择特定列:

from sqlalchemy.sql import select

s = select([users_table.c.user_name, users_table.c.user_country], users_table.c.user_name == username)

for user_name, user_country in s.execute():
   print user_name, user_country
以您在问题中使用的方式打印附加值的列名应该是最好的,因为RowProxy实际上只是一个有序字典


在我看来,SqlAlchemy的API文档对于学习如何使用它并没有真正的帮助。我建议你读一下这本书。它包含有关使用SqlAlchemy进行基本查询的最重要信息。

SqlAlchemy对象具有类似dict的方法--
.items()
要获取所有名称/值对,请使用
.keys()
仅获取名称(例如,将它们显示为标题行,然后使用
.values())
获取相应的值,或使用每个键索引到
RowProxy
对象等,因此它是一个“智能对象”,而不是一个简单的dict不会给您带来不必要的不便。

第一个片段是我最初想到的,并返回了所有内容。第二个片段我得到了“ValueError:太多的值无法解包”-hrm?啊,我没有指定额外的列。让我们再试一次。TypeError:select()最多接受2个参数(给定4个)>>s=users\u table.select(users\u table.c.users\u name,users\u table.c.users\u location,users\u table.c.users\u name==username)再试一次,我将select()的语法与table.select()混淆了。谢谢-您的修改版本似乎有效。但是除了值之外,我怎么还可以打印列名呢?所以现在它吐出“jeff”,“usa”,而我实际上想要用户名:jeff,country:usa。这感觉有点奇怪,因为返回的对象是“智能对象”“而且不是一个常规的简单字典/数组,我可以用它来处理键/值。。。
from sqlalchemy.sql import select

s = select([users_table.c.user_name, users_table.c.user_country], users_table.c.user_name == username)

for user_name, user_country in s.execute():
   print user_name, user_country