我正在将旧的Web应用程序的SQL实现更改为flask-alchemy,并且对通信有一些困难。将SQL查询转换为flask-sqlalchemy语句
旧代码看起来像这样。它执行关于某些属性的名称查询并返回csv样式文本。
header = 'id,display_name,city,state,latitude,longitude\n'
base_query = '''SELECT id, bbs_id, city, state,
latitude, longitude FROM mytable'''
conn = sqlite3.connect(path.join(ROOT,'db.sqlite'))
c = conn.execute(base_query+'WHERE name=?', (name,))
results = c.fetchall()
conn.close()
rows = [','.join(map(str, row)) for row in results]
return header + rows
新的代码
header = 'id,display_name,city,state,latitude,longitude\n'
cols = ['id', 'bbs_id', 'city', 'state', 'latitude', 'longitude']
users = User.query.filter_by(name=name).all()
rows = ''
for user in users:
rows += ','.join([user.id, user.bbs_id, user.city, user.state, user.latitude, user.longitude]) + '\n'
return header + rows
我不开心的用新的代码,因为它是如此冗长。
- 有没有办法只选择
cols
而不是查询所有列,然后选择需要的列? - 如果没有,是否可以更简洁地编写
','.join()
?看来user['id']
不起作用,我必须做user.id
。
'filter_by(name = name)'? – nos
@nos添加到示例。 – univerio