jihuaqiang преди 1 месец
родител
ревизия
bbbd76a97c
променени са 2 файла, в които са добавени 74 реда и са изтрити 0 реда
  1. 1 0
      requirements.txt
  2. 73 0
      utils/mysql_db.py

+ 1 - 0
requirements.txt

@@ -95,3 +95,4 @@ websockets==15.0.1
     # via
     #   google-genai
     #   lark-oapi
+pymysql==1.0.2

+ 73 - 0
utils/mysql_db.py

@@ -0,0 +1,73 @@
+# -*- coding: utf-8 -*-
+"""
+数据库连接及操作
+"""
+import pymysql
+from loguru import logger
+
+class MysqlHelper:
+    @classmethod
+    def connect_mysql(cls):
+        # 创建一个 Connection 对象,代表了一个数据库连接
+        connection = pymysql.connect(
+            host="rm-bp13g3ra2f59q49xs.mysql.rds.aliyuncs.com",  # 数据库IP地址,内网地址
+            port=3306,  # 端口号
+            user="wqsd",  # mysql用户名
+            passwd="wqsd@2025",  # mysql用户登录密码
+            db="ai_knowledge",  # 数据库名
+            # 如果数据库里面的文本是utf8编码的,charset指定是utf8
+            charset="utf8")
+        return connection
+
+    @classmethod
+    def get_values(cls, sql, params=None):
+        try:
+            # 连接数据库
+            connect = cls.connect_mysql()
+            # 返回一个 Cursor对象
+            mysql = connect.cursor()
+
+            if params:
+                # 如果传递了 params 参数
+                mysql.execute(sql, params)
+            else:
+                # 如果没有传递 params 参数
+                mysql.execute(sql)
+            # fetchall方法返回的是一个元组,里面每个元素也是元组,代表一行记录
+            data = mysql.fetchall()
+
+            # 关闭数据库连接
+            connect.close()
+
+            # 返回查询结果,元组
+            return data
+        except Exception as e:
+            print(f"get_values异常:{e}\n")
+
+    @classmethod
+    def update_values(cls, sql):
+        # 连接数据库
+        connect = cls.connect_mysql()
+        # 返回一个 Cursor对象
+        mysql = connect.cursor()
+        try:
+            # 执行 sql 语句
+            res = mysql.execute(sql)
+            # 注意 一定要commit,否则添加数据不生效
+            connect.commit()
+            return res
+        except Exception as e:
+            # 发生错误时回滚
+            logger.error(f"Error executing SQL: {e}")
+            connect.rollback()
+            return None  # 返回 None 表示失败
+        finally:
+            # 确保资源关闭
+            if mysql:
+                mysql.close()
+            if connect:
+                connect.close()
+
+
+
+