I am changing my old SQL implementations of a web app to flask-alchemy and having some difficulties about the correspondence.
The old code looks like this. It does the name query about some properties and returns a csv style text.
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
The new code
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
I am not happy with the new code since it's so verbose.
- Is there a way to select only the ones in
cols
instead of query all columns and then pick the needed columns? - If not, is it possible to write the
','.join()
more succinctly? It seemsuser['id']
does not work and I have to douser.id
.