Ton*_*ony 15 python sqlalchemy
当我想在网上显示一些数据时,数据需要化妆,我不知道如何实现,这里是代码:
from sqlalchemy import create_engine
engine = create_engine('mysql://root:111@localhost/test?charset=utf8')
conn = engine.connect()
articles = conn.execute('SELECT * FROM article')
articles = articles.fetchall()
for r in articles:
r['Tags'] = r['Keywords']
Run Code Online (Sandbox Code Playgroud)
它提示:'RowProxy'对象不支持项目分配.
我该怎么办?
表格"文章"包含"关键字"列,而不包含"标记"列.
jd.*_*jd. 22
您可以从RowProxy中创建一个dict,这将支持项目分配.
例如:
result_proxy = query.fetchall()
for row in result_proxy:
d = dict(row.items())
d['Tags'] = d['Keywords']
Run Code Online (Sandbox Code Playgroud)
一个很好的技巧是使用字典的子类:
class DBRow(dict):
def __getattr__(self, key):
"""make values available as attributes"""
try:
return self[key]
except KeyError as error:
raise AttributeError(str(error))
@property
def something_calculated(self):
return self.a + self.b
row = DBRow(result_proxy_row, additional_value=123)
row["b"] = 2 * row.b
print something_calculated
Run Code Online (Sandbox Code Playgroud)
这样做的好处是,您仍然可以将值作为属性访问,而且您可以拥有属性,这是清理和处理来自数据库的数据的好方法。
| 归档时间: |
|
| 查看次数: |
8534 次 |
| 最近记录: |