import os from urllib.parse import urlparse import psycopg from psycopg import sql def generate_test_data() -> None: """ Generate the test data in PostgreSQL database Watch for PostgreSQL version changes """ url_parts = urlparse(os.environ["TODO_DB_DATABASE_URL"]) # Extract connection parameters dbname = url_parts.path[1:] user_name = url_parts.username password = url_parts.password host = url_parts.hostname port = url_parts.port print( f"The database name is {dbname}, the username is {user_name}, " f"the password is {password}, the host is {host}, the port is {port}" ) with psycopg.connect( dbname=dbname, user=user_name, password=password, host=host, port=port ) as conn: with conn.cursor() as cur: # create the members table cur.execute( sql.SQL( """ INSERT INTO members (email, password_hash) VALUES ('member@todo.test', '$2b$14$6yXjNza30kPCg3LhzZJfqeCWOLM.zyTiQFD4rdWlFHBTfYzzKJMJe') """ ) ) cur.execute( sql.SQL( """ INSERT INTO todos (member_id, task) VALUES (1, 'Test Task') """ ) ) # Commit the changes conn.commit() print("Finished PostgreSQL test data generation") print("=================================================================") if __name__ == "__main__": generate_test_data()