我正在將舊的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