zoukankan      html  css  js  c++  java
  • Python使用orator操作mysql数据库

    安装

    orator安装命令

    pip install orator
    

    简单使用

    数据库的连接操作
    config = {
                'mysql': {
                    'driver': 'mysql',
                    'host': 'localhost',
                    'database': 'test_one',
                    'user': 'root',
                    'password': '123456',
                    'prefix': '',
                    'port': 3306
                }
            }
    db = DatabaseManager(config=config).connection()
    
    增加

    增加一条信息记录

    db.table('test').insert_get_id({
        "published": "2020-11-05",
        "source": "自定义",
        "title": "测试标题",
        "url": "https://www.baidu.com",
        "sort": 56
    })
    

    插入多条信息记录

    db.table('test').insert([
        {"published": "2020-03-11", "source": "来源1", "title": "行测", "url": "https://sohu.com", "sort": 1},
        {"published": "2020-03-12", "source": "来源2", "title": "申论", "url": "https://infoq.com", "sort": 2}
    ])
    
    删除

    删除满足条件的记录记录

    # 删除title_sort字段为测试1的记录
    self.db.table("test").where("title_tort", "=", "测试1").delete()
    

    删除所有记录信息

    # 删除所有记录
    self.db.table("test").delete()
    
    修改

    修改一条信息记录

    # 更新id为13的记录 将sort值修改为16
    self.db.table("test").where('id', 13).update({"sort": 16})
    
    查询

    查询id为1的信息

    # corpus为表名
    result = db.table('corpus').where('id', '1').get()
    print(result)
    

    多条件查询 (从数据的第五行开始,查询五条数据)

    result_one = db.table('corpus').offset(3).limit(5).get()
    for num, data in enumerate(result_one):
        print(num, data)
    

    多条件限制查询

    result_two = db.table('corpus').where('type', 'man').where_between('age', [15, 25]).get()
    for every_data in result_two:
        print(every_data)
    

    其他复杂查询操作可参照文档

    完整代码

    限制条件:已存在test表,才能进行对应的操作

    from loguru import logger
    from orator import DatabaseManager,Model
    
    
    config = {
            'mysql': {
                'driver': 'mysql',
                'host': 'localhost',
                'database': 'test_one',
                'user': 'root',
                'password': '123456',
                'prefix': '',
                'port': 3306
            }
        }
    
    
    class OperateMysql(object):
    
        def __init__(self):
            self.config = config
            self.db = DatabaseManager(config=self.config).connection()
    
        def insert_data(self):
            # 如果table有自增的id,使用insert_get_id 插入一条记录
            self.db.table('test').insert_get_id({
                "published": "2020-11-05",
                "source": "自定义",
                "title": "测试标题",
                "url": "https://www.baidu.com",
                "sort": 56
            })
            # 插入多条记录
            self.db.table('test').insert([
                {"published": "2020-03-11", "source": "来源1", "title": "行测", "url": "https://sohu.com", "sort": 1},
                {"published": "2020-03-12", "source": "来源2", "title": "申论", "url": "https://infoq.com", "sort": 2}
            ])
    
        def delete_data(self):
            # 删除title_sort字段为测试1的记录
            self.db.table("test").where("title_tort", "=", "测试1").delete()
            # 删除sort的值为1的记录
            self.db.table("test").where("sort", 1).delete()
            # 删除所有记录
            self.db.table("test").delete()
    
        def update_data(self):
            # 更新id为13的记录 将sort值修改为16
            self.db.table("test").where('id', 13).update({"sort": 16})
            # 将sort列的所有信息增加3
            self.db.table("test").increment('sort', 3)
    
        def search_data(self):
            # 查询id为1的数据
            result = self.db.table('corpus').where('id', '1').get()
            print(result)
            # 多条件查询 (从数据的第五行开始,查询五条数据)
            result_one = self.db.table('corpus').offset(3).limit(5).get()
            for num, data in enumerate(result_one):
                print(num, data)
            # 多条件限制查询
            result_two = self.db.table('corpus').where('type', 'man').where_between('age', [15, 25]).get()
            for every_data in result_two:
                print(every_data)
    
    
    if __name__ == '__main__':
        om = OperateMysql()
        om.update_data()
    

    参考资料

    在线文档
    github地址

  • 相关阅读:
    django-带参数路由
    django-获取购物车商品数量-redis
    django-配置静态页面-celery/redis/nginx
    django-自定义文件上传存储类
    django-安装nginx及fastdfs-nginx-module
    linux压缩和解压缩命令
    django-文件上传和下载--fastDFS安装和配置
    django-缓存django-redis
    django-改写manage类-objects
    django-登录后得个人信息
  • 原文地址:https://www.cnblogs.com/ppwang06/p/orator_mysql.html
Copyright © 2011-2022 走看看