You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

49 lines
1.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import psycopg2
from psycopg2.extras import RealDictCursor
from config import Config
import uuid
from datetime import datetime
class Database:
"""数据库连接类"""
@staticmethod
def get_connection():
"""获取数据库连接"""
return psycopg2.connect(**Config.DB_CONFIG)
@staticmethod
def execute_query(query, params=None, fetch=True):
"""执行SQL查询"""
conn = Database.get_connection()
try:
with conn.cursor(cursor_factory=RealDictCursor) as cur:
cur.execute(query, params or ())
if fetch:
result = cur.fetchall()
return result
conn.commit()
return True
except Exception as e:
conn.rollback()
raise e
finally:
conn.close()
@staticmethod
def execute_one(query, params=None):
"""执行SQL查询返回单条结果"""
conn = Database.get_connection()
try:
with conn.cursor(cursor_factory=RealDictCursor) as cur:
cur.execute(query, params or ())
result = cur.fetchone()
return result
finally:
conn.close()
def generate_id():
"""生成16位唯一ID"""
import uuid
return str(uuid.uuid4()).replace('-', '')[:16]