med*_*iev 11 python sql sqlalchemy
我正在尝试做一些相对简单的事情,吐出列名和各自的列值,并可能过滤掉一些列,这样就不会显示它们.
这是我尝试的(当然是在初始连接之后):
metadata = MetaData(engine)
users_table = Table('fusion_users', metadata, autoload=True)
s = users_table.select(users_table.c.user_name == username)
results = s.execute()
if results.rowcount != 1:
return 'Sorry, user not found.'
else:
for result in results:
for x, y in result.items()
print x, y
Run Code Online (Sandbox Code Playgroud)
我查看了SQLAlchemy(v.5)上的API,但是很困惑.'结果'中的'结果'是一个RowProxy,但我认为它不会为.items()调用返回正确的对象.
假设我的表结构是这样的:
user_id user_name user_password user_country
0 john a9fu93f39uf usa
Run Code Online (Sandbox Code Playgroud)
我想过滤并指定要显示的列名称(我不想显示user_password) - 我该如何实现?
seb*_*sgo 14
您可以results立即用作迭代器.
results = s.execute()
for row in results:
print row
Run Code Online (Sandbox Code Playgroud)
选择特定列的方法如下:
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
Run Code Online (Sandbox Code Playgroud)
要按照你在问题中所做的方式打印值之外的列名应该是最好的,因为RowProxy实际上只不过是一个有序字典.
IMO SqlAlchemy的API文档对于学习如何使用它并不是很有帮助.我建议你阅读SQL Expression Language Tutorial.它包含有关使用SqlAlchemy进行基本查询的最重要信息.
| 归档时间: |
|
| 查看次数: |
24867 次 |
| 最近记录: |