Working with Database - up1/course-python-workshop GitHub Wiki
Working with Database
# Create table token by user with sqlite3
import sqlite3
def create_table():
"""Create a SQLite database and a table for storing tokens."""
conn = sqlite3.connect('example.db')
c = conn.cursor()
# Create table if it does not exist
c.execute('''CREATE TABLE IF NOT EXISTS token
(id INTEGER PRIMARY KEY,
user TEXT,
token TEXT)''')
# create index for faster lookup
c.execute('CREATE INDEX IF NOT EXISTS idx_user ON token (user)')
conn.commit()
conn.close()
# Insert a sample token
def insert_token(user, token):
conn = sqlite3.connect('example.db')
c = conn.cursor()
c.execute("INSERT INTO token (user, token) VALUES (?, ?)", (user, token))
conn.commit()
conn.close()
# Check token for a user
def check_token(user):
conn = sqlite3.connect('example.db')
c = conn.cursor()
c.execute("SELECT token FROM token WHERE user=?", (user,))
result = c.fetchone()
conn.close()
return result[0] if result else None
# Example usage
# create_table()
# insert_token('somkiat', 'sample_token_123')
# print(check_token('somkiat')) # Should return 'sample_token_123'
# Add 100,000 tokens
# for i in range(100000):
# insert_token(f'user_{i}', f'token_{i}')
# Check a specific token with a large number of entries
# Performance test
if __name__ == "__main__":
create_table()
# Insert 100,000 tokens for performance testing
for i in range(100000):
insert_token(f'user_{i}', f'token_{i}')
print("Inserted 100,000 tokens.")
# Check a specific token
import time
start_time = time.time()
print(check_token('user_99999')) # Should return 'token_99999'
end_time = time.time()
print(f"Time taken to check token: {end_time - start_time} seconds")