2026-04-05 17:45:15 +08:00
|
|
|
"""PostgreSQL database connection module"""
|
|
|
|
|
import psycopg2
|
|
|
|
|
import os
|
2026-04-04 18:23:00 +08:00
|
|
|
from contextlib import contextmanager
|
|
|
|
|
|
2026-04-05 17:45:15 +08:00
|
|
|
DB_CONFIG = {
|
|
|
|
|
'host': os.environ.get('DB_HOST', 'pgm-bp1t1008h019ez6c.pg.rds.aliyuncs.com'),
|
|
|
|
|
'port': int(os.environ.get('DB_PORT', 5432)),
|
|
|
|
|
'user': os.environ.get('DB_USER', 'coolbot'),
|
|
|
|
|
'password': os.environ.get('DB_PASSWORD', 'Coolbot123'),
|
|
|
|
|
'database': os.environ.get('DB_NAME', 'coolbot_data'),
|
|
|
|
|
}
|
2026-04-04 18:23:00 +08:00
|
|
|
|
2026-04-05 17:45:15 +08:00
|
|
|
@contextmanager
|
|
|
|
|
def get_db():
|
|
|
|
|
"""Database connection context manager"""
|
|
|
|
|
conn = None
|
|
|
|
|
try:
|
|
|
|
|
conn = psycopg2.connect(**DB_CONFIG)
|
|
|
|
|
yield conn
|
|
|
|
|
conn.commit()
|
|
|
|
|
except Exception as e:
|
|
|
|
|
if conn:
|
|
|
|
|
conn.rollback()
|
|
|
|
|
raise e
|
|
|
|
|
finally:
|
|
|
|
|
if conn:
|
|
|
|
|
conn.close()
|
2026-04-04 18:23:00 +08:00
|
|
|
|
|
|
|
|
def test_connection():
|
|
|
|
|
try:
|
2026-04-05 17:45:15 +08:00
|
|
|
with get_db() as conn:
|
|
|
|
|
cur = conn.cursor()
|
|
|
|
|
cur.execute("SELECT version()")
|
|
|
|
|
print(f"DB OK: {str(cur.fetchone()[0])[:50]}")
|
2026-04-04 18:23:00 +08:00
|
|
|
return True
|
|
|
|
|
except Exception as e:
|
2026-04-05 17:45:15 +08:00
|
|
|
print(f"DB ERROR: {e}")
|
2026-04-04 18:23:00 +08:00
|
|
|
return False
|
2026-04-05 17:45:15 +08:00
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
test_connection()
|