· 5 years ago · Nov 22, 2020, 09:34 PM
1import psycopg2
2
3
4def ensure_connection(func):
5
6 def inner(*args, **kwargs):
7 with psycopg2.connect(
8 database="da36mk4odq05nq",
9 user="r###########h",
10 password="5138d2439bffc7a99e#######################16fd5f3d43ced0e2",
11 host="ec2-176-34-114-78.eu-west-1.compute.amazonaws.com",
12 port="5432") as conn:
13 res = func(*args, conn=conn, **kwargs)
14 return res
15
16 return inner()
17
18
19@ensure_connection
20def init_db(conn, force: bool = False):
21 c = conn.cursor()
22
23 if force:
24 c.execute("DROP TABLE IF EXISTS users")
25
26 c.execute('''
27 CREATE TABLE IF NOT EXISTS user_message (
28 id INTEGER PRIMARY KEY,
29 user_id INTEGER NOT NULL,
30 text TEXT NOT NULL
31 )
32 ''')
33
34 conn.commit()
35
36
37@ensure_connection
38def add_message(conn, user_id: int, text: str):
39 c = conn.cursor()
40 c.execute("INSERT INTO user_message (user_id, text) VALUES (?, ?)", (user_id, text))
41 conn.commit()
42
43
44@ensure_connection
45def count_messages(conn, user_id: int):
46 c = conn.cursor()
47 c.execute("SELECT COUNT(*) FROM user_message WHERE user_id = ? LIMIT 1", (user_id, ))
48 (res, ) = c.fetchone()
49 return res
50
51
52@ensure_connection
53def list_messages(conn, user_id: int, limit: int = 10):
54 c = conn.cursor()
55 c.execute("SELECT id, text FROM user_message WHERE user_id = ? ORDER BY id DESC LIMIT ?", (user_id, limit))
56 return c.fetchall()
57
58
59if __name__ == "__main__":
60 add_message(user_id=12345, text="qwerty")
61