student_server/db_con.py

57 lines
1.6 KiB
Python
Raw Permalink Normal View History

2025-12-09 09:28:29 +08:00
import pymysql
# 数据库配置
db_config = {
'host': "47.106.222.181",
'user': "group3",
'password': 'group3',
'database': 'ClassDB',
'port':25083
}
def con_mysql(sql_code, params=None):
conn = None
try:
conn = pymysql.connect(** db_config)
conn.ping(reconnect=True)
cursor = conn.cursor()
print(f"执行SQL: {sql_code}")
print(f"参数: {params}")
# 执行SQL
if params:
cursor.execute(sql_code, params)
else:
cursor.execute(sql_code)
# 增/删/改操作
if sql_code.strip().upper().startswith(('INSERT', 'UPDATE', 'DELETE')):
conn.commit()
result = {
'success': True,
'affected_rows': cursor.rowcount
}
# 对INSERT操作额外返回自增ID
if sql_code.strip().upper().startswith('INSERT'):
result['lastrowid'] = cursor.lastrowid
return result
# 查询操作
elif sql_code.strip().upper().startswith('SELECT'):
data = cursor.fetchall()
columns = [col[0] for col in cursor.description]
return {
'success': True,
'data': [dict(zip(columns, row)) for row in data]
}
return {'success': True}
except pymysql.MySQLError as err:
if conn:
conn.rollback()
return {'success': False, 'error': f"{type(err).__name__}: {err}"}
finally:
if conn:
conn.close()