python db类

import pymysql

class DB:
    __host = 'localhost' # 服务器地址
    __username = 'root' # 用户名
    __password = '' # 密码
    __database = 'test' # 数据库
    __field = '*' # 查询字段
    __where = '' # 条件
    __sql = False # 是否返回sql
    __join = '' # 联表
    __order = '' # 排序
    __limit = '' # 数量

    # 构造函数,在生成对象时调用
    def __init__(self, table):
        try:
            # 打开数据库连接 host, username, password, database
            self.db = pymysql.connect(self.__host, self.__username, self.__password, self.__database)
        except Exception as e:
            print(e)
            exit()

        # 使用 cursor() 方法创建一个游标对象 cursor
        self.cursor = self.db.cursor()
        self.table = table

    # 析构函数,释放对象时使用
    def __del__(self):
        try:
            # 关闭数据库连接
            self.db.close()
        except Exception as e:
            print(e)

    # 得到当前sql语句
    def getSql(self):
        self.__sql = True
        return self

    # 字段
    def field(self, str):
        self.__field = str
        return self

    # 联表
    def join(self, table, where):
        self.__join = ' LEFT JOIN ' + table + ' ON ' + where + ' '
        return self

    # 条件
    def where(self, param):
        self.__where = ' WHERE '
        if isinstance(param, list):
            for i in param:
                if isinstance(i[2], list):
                    tmp = '('
                    for j in i[2]:
                        tmp += str(j) + ','
                    tmp += ')'
                    self.__where += '`' + i[0] + '` ' + i[1] + ' ' + tmp + ' AND '
                else:
                    self.__where += '`' + i[0] + '` ' + i[1] + ' ' + str(i[2]) + ' AND '
            else:
                self.__where = self.__where[0:-4]
        else:
            self.__where += param

        return self

    # 排序
    def order(self, str):
        self.__order = ' ORDER BY ' + str
        return self

    # 数量
    def limit(self, str):
        self.__limit = ' LIMIT ' + str
        return self

    # 增加
    def insert(self, dict):
        key = value = ''
        for k, v in dict.items():
            key += '`' + k + '`,'
            value += '"' + v + '",'

        key = key[0:-1]
        value = value[0:-1]

        sql = 'INSERT INTO ' + self.table + ' (' + key + ') VALUES (' + value + ')'
        if self.__sql:
            return sql

        try:
            # 执行sql语句
            ret = self.cursor.execute(sql)
            # 提交到数据库执行
            self.db.commit()
            return ret
        except Exception as e:
            # 如果发生错误则回滚
            self.db.rollback()
            print(e)
            return 0

    # 删除
    def delete(self):
        if self.__where:
            sql = "DELETE FROM " + self.table + self.__where
            if self.__sql:
                return sql

            try:
                # 执行sql语句
                ret = self.cursor.execute(sql)
                # 提交到数据库执行
                self.db.commit()
                return ret
            except Exception as e:
                # 如果发生错误则回滚
                self.db.rollback()
                print(e)
                return 0

        else:
            raise BaseException('没有条件') # 抛异常

    # 修改
    def update(self, dict):
        str = ''
        for k, v in dict.items():
            str += '`' + k + '`="' + v + '",'

        str = str[0:-1]
        sql = 'UPDATE ' + self.table + ' SET ' + str

        if self.__where:
            sql += self.__where
        if self.__sql:
            return sql

        try:
            # 执行sql语句
            ret = self.cursor.execute(sql)
            # 提交到数据库执行
            self.db.commit()
            return ret
        except Exception as e:
            # 如果发生错误则回滚
            self.db.rollback()
            print(e)
            return 0

    # 查询
    def select(self):
        sql = "SELECT " + self.__field + " FROM " + self.table

        if self.__join:
            sql += self.__join

        if self.__where:
            sql += self.__where

        if self.__order:
            sql += self.__order

        if self.__limit:
            sql += self.__limit

        if self.__sql:
            return sql

        # 使用 execute()  方法执行 SQL 查询
        self.cursor.execute(sql)

        # 使用 fetchall() 方法获取所有数据.
        data = self.cursor.fetchall()

        return data


'''
DROP TABLE IF EXISTS `people`;
CREATE TABLE `people` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '名字',
  `sex` varchar(7) DEFAULT '' COMMENT '性别',
  `job` varchar(6) DEFAULT '' COMMENT '工作',
  `age` varchar(6) DEFAULT '' COMMENT '年龄',
  `height` varchar(6) DEFAULT '' COMMENT '身高',
  `weight` varchar(6) DEFAULT '' COMMENT '体重',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

INSERT INTO `people` VALUES ('1', '赵一', '男', '学生', '8', '120', '35');
INSERT INTO `people` VALUES ('2', '钱二', '女', '学生', '9', '111', '31');
INSERT INTO `people` VALUES ('3', '孙三', '男', '学生', '10', '123', '34');
INSERT INTO `people` VALUES ('4', '李四', '女', '学生', '11', '100', '30');
'''

db = DB('people')

# 增加
dict = {'name': '周五', 'sex': '男', 'job': '学生', 'age': '8', 'height': '121', 'weight': '32'}
data = db.insert(dict)
print(data)

# 删除
# data = db.where('id=6').delete()
# print(data)

# 修改
# dict = {'age': '9', 'height': '121', 'weight': '31'}
# data = db.where('id=7').update(dict)
# print(data)

# 查询 优化where条件 'id<11'
# data = db.field('id,name,age,job').where([['id', '>', 1]]).order('id desc').limit('3').select()
# print(data)

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python连接DB2有几种方式,其中一种是使用IBM提供的ibm_db库。连接DB2可以通过以下步骤进行: 第一种方式是使用ibm_db库进行连接。首先,需要导入ibm_db模块,然后使用connect函数连接到DB2数据库。连接字符串中包括数据库名称、主机名、端口号、协议、用户名和密码等信息。连接成功后,可以使用exec_immediate函数执行SQL语句,使用fetch函数获取查询结果,使用commit函数提交事务等操作。 另一种方式是使用第三方库ibm_db_sa。可以通过安装ibm_db_sa库并导入相应模块后,使用SQLAlchemy的方式连接到DB2数据库。这种方式可以更方便地进行数据库操作。 在使用ibm_db连接DB2时,可能会遇到需要管理员权限的问题。如果无法通过pip install ibm_db安装库,可以通过离线安装的方式进行。具体步骤如下: 1. 下载ibm_db安装压缩包,并将其解压到指定目录下。 2. 下载DB2数据库的ODBC驱动相关文件,并将其解压到指定目录下。 3. 在命令行中执行python setup.py install命令,进行安装。 4. 确保驱动文件复制到正确的目录下,以避免连接时出现找不到驱动的异常。 使用以上方法,可以在Python中连接到DB2数据库,并进行相应的操作。希望对你有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [超简单快速用python操作DB2,包含read、insert、update](https://blog.csdn.net/weixin_41805866/article/details/92969068)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Python 操作 DB2 库_亲测可用](https://blog.csdn.net/weixin_41384006/article/details/121400675)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [python如何连接db2?](https://blog.csdn.net/m0_48468018/article/details/127178527)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值