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地址

posted @ 2020-03-24 17:40  _墨染丶  阅读(600)  评论(0编辑  收藏  举报