ChatGLM2-130b 生成 pymysql 动态CURD

  •  config.ini
[database]
user = root
password = 1qaz@WSX
host = 192.168.10.212
port = 3306
db = dataset
charset=utf8
  • Database.py
import string

import pymysql
import configparser
import logging

# logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')



class Database:
    # 数据库操作类,提供连接数据库、更新、查询、删除、截断、解释查询、创建和删除表等功能。
    def __init__(self):
        # 读取配置文件
        config = configparser.ConfigParser()
        config.read('config.ini')

        # 获取数据库连接参数
        self.host = config.get('database', 'host')
        self.user = config.get('database', 'user')
        self.password = config.get('database', 'password')
        self.db = config.get('database', 'db')

        # 初始化数据库连接
        self.conn = self.get_conn()

    # 获取数据库连接
    def get_conn(self):
        # 异常捕捉:如果获取连接失败,捕获异常并打印错误信息
        try:
            return pymysql.connect(**{
                'host': self.host,
                'user': self.user,
                'password': self.password,
                'db': self.db,
                'charset': 'utf8mb4'
            })
        except pymysql.MySQLError as e:
            logging.debug(f"获取数据库连接失败:{e}")
            return None

    # 更新动态表
    def update_dynamic_table(self, table_name, columns, condition):
        # 执行SQL更新语句
        sql = f"UPDATE %s SET %s WHERE %s" % (
            table_name, ', '.join(['%s=\'%s\'' % (c, str(columns[c])) for c in columns.keys()]), condition)
        # 在执行之前打印 SQL 语句
        logging.debug(sql)
        try:
            with self.conn.cursor() as cursor:
                cursor.execute(sql)
                self.conn.commit()
                logging.debug(f"更新动态表'{table_name}'成功。")
        except pymysql.MySQLError as e:
            logging.debug(f"更新动态表失败:{e}")
        except Exception as e:
            logging.debug(f"更新动态表时发生错误:{e}")

    def query_dynamic_table_page(self, table_name, columns, condition, page, page_size):
        # 计算偏移量
        offset = (page - 1) * page_size

        # 构造 SQL 查询语句,包括分页参数
        sql = f"SELE
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值