Skip to content

Commit b81dcb9

Browse files
authoredJul 14, 2024
Create sharding.py
1 parent 075bfa6 commit b81dcb9

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed
 

‎sharding.py

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import psycopg2
2+
3+
# Configuration for database shards
4+
num_shards = 4
5+
shards = {
6+
0: "dbname=shard1 user=your_user password=your_password host=your_host",
7+
1: "dbname=shard2 user=your_user password=your_password host=your_host",
8+
2: "dbname=shard3 user=your_user password=your_password host=your_host",
9+
3: "dbname=shard4 user=your_user password=your_password host=your_host"
10+
}
11+
12+
# shard based on user_id
13+
def get_shard(user_id):
14+
return user_id % num_shards
15+
16+
def execute_query(db_connection, query, params):
17+
conn = psycopg2.connect(db_connection)
18+
cur = conn.cursor()
19+
cur.execute(query, params)
20+
result = cur.fetchone() if query.strip().upper().startswith("SELECT") else None
21+
conn.commit()
22+
cur.close()
23+
conn.close()
24+
return result
25+
26+
def insert_user(user_id, username, email, password_hash):
27+
shard_id = get_shard(user_id)
28+
db_connection = shards[shard_id]
29+
query = "INSERT INTO users (user_id, username, email, password_hash) VALUES (%s, %s, %s, %s)"
30+
execute_query(db_connection, query, (user_id, username, email, password_hash))
31+
32+
print(insert_user(1, 'john_doe', 'john@example.com', 'hashed_password'))

0 commit comments

Comments
 (0)