Python

db 연결하는 python 코드

크레비즈 2025. 3. 10. 23:10

Windsurf 가 짜준 postgresql db 에 연결하는 python 코드입니다.

설명과 로그를 상세하게 만들어줬네요.

 

import psycopg2
from psycopg2 import OperationalError
import sys

print(f"Python version: {sys.version}")
print("Attempting to import psycopg2...")
print(f"psycopg2 version: {psycopg2.__version__}")

def connect_to_postgres():
    """
    Connect to PostgreSQL database using the provided credentials
    """
    try:
        print("Starting connection process...")
        # Connection parameters
        db_params = {
            "host": "localhost",
            "port": "5432",
            "database": "postgres",
            "user": "postgres",
            "password": "1qaz2wsx"
        }
        
        print(f"Using connection parameters: {db_params}")
        
        # Establish connection
        print("Attempting to connect...")
        connection = psycopg2.connect(**db_params)
        
        # Create a cursor
        cursor = connection.cursor()
        
        # Print PostgreSQL version
        cursor.execute("SELECT version();")
        db_version = cursor.fetchone()
        print(f"Connected to PostgreSQL database!")
        print(f"PostgreSQL version: {db_version[0]}")
        
        return connection
    except OperationalError as e:
        print(f"Error connecting to PostgreSQL database: {e}")
        return None
    except Exception as e:
        print(f"Unexpected error: {e}")
        return None

def execute_query(connection, query):
    """
    Execute a query on the PostgreSQL database
    """
    try:
        print(f"Executing query: {query}")
        cursor = connection.cursor()
        cursor.execute(query)
        
        if query.strip().upper().startswith("SELECT"):
            results = cursor.fetchall()
            print(f"Query results: {results}")
            return results
        else:
            connection.commit()
            print(f"Query executed successfully. Rows affected: {cursor.rowcount}")
            return f"Query executed successfully. Rows affected: {cursor.rowcount}"
    except Exception as e:
        print(f"Error executing query: {e}")
        return None

def close_connection(connection):
    """
    Close the database connection
    """
    if connection:
        print("Closing database connection...")
        connection.close()
        print("Database connection closed.")

if __name__ == "__main__":
    # Connect to the database
    print("Attempting to connect to database...")
    conn = connect_to_postgres()
    
    if conn:
        # Example: Execute a simple query
        query = "SELECT current_database(), current_user;"
        print(f"Executing query: {query}")
        results = execute_query(conn, query)
        
        if results:
            print("\nQuery results:")
            for row in results:
                print(f"Database: {row[0]}, User: {row[1]}")
        
        # Close the connection
        close_connection(conn)

 

 

결과입니다.

Python version: 3.12.2 (tags/v3.12.2:6abddd9, Feb  6 2024, 21:26:36) [MSC v.1937 64 bit (AMD64)]
Attempting to import psycopg2...
psycopg2 version: 2.9.10 (dt dec pq3 ext lo64)
Attempting to connect to database...
Starting connection process...
Using connection parameters: {'host': 'localhost', 'port': '5432', 'database': 'postgres', 'user': 'postgres', 'password': '1qaz2wsx'}
Attempting to connect...
Connected to PostgreSQL database!
PostgreSQL version: PostgreSQL 17.4 on x86_64-windows, compiled by msvc-19.42.34436, 64-bit
Executing query: SELECT current_database(), current_user;
Executing query: SELECT current_database(), current_user;
Query results: [('postgres', 'postgres')]

Query results:
Database: postgres, User: postgres
Closing database connection...
Database connection closed.