-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathsalesperson.py
More file actions
33 lines (28 loc) · 1.01 KB
/
salesperson.py
File metadata and controls
33 lines (28 loc) · 1.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:', echo=True)
engine.execute('CREATE TABLE "salesperson" ('
'id INTEGER NOT NULL,'
'name VARCHAR,'
'PRIMARY KEY (id));')
# print list of tables name
engine.table_names()
# use transactions (all commands must be successful, else rollback)
conn = engine.connect()
trans = conn.begin()
conn.execute('INSERT INTO "salesperson" (name)'
'VALUES ("John Doe"), ("Margaret"), ("Anna")')
trans.commit()
# query single result
row = conn.execute('SELECT * FROM salesperson LIMIT 1').fetchone()
row[0] # returns 1
row[1] # returns 'John Doe'
resultproxy = conn.execute('SELECT * FROM salesperson')
# rows
# <sqlalchemy.engine.result.ResultProxy object at 0x102a2a9b0>
d, a = {}, []
for rowproxy in resultproxy:
for column, value in rowproxy.items():
print(d)
d = {**d, **{column:value}}
a.append(d)
[{column:value for column, value in rowproxy.items()} for rowproxy in resultproxy]