从0开始python学习-53.python操作mysql、redis、mongo数据库

news/2024/6/18 4:03:55 标签: 数据库, python, 学习, pycharm, mysql, redis

目录

mysql-toc" style="margin-left:0px;">mysql

redis-toc" style="margin-left:0px;">redis

mongo


mysql">mysql

python">class AssertUtil:
    # 连接数据库
    def conn_mysql(self):
        self.conn = pymysql.connect(
            user="user",
            password="pwd",
            host="127.0.0.1",
            database="sd",
            port=3306
        )
        return self.conn

    # 执行sql语句
    def execute_sql(self,sql):
        # 创建数据库链接
        conn = self.conn_mysql()
        # 创建游标
        cs = conn.cursor()
        # 执行SQL
        cs.execute(sql)
        # 取值
        value = cs.fetchone()
        # 关闭资源
        cs.close()
        conn.close()
        # 返回值
        return value
        
if __name__ == "__main__":
    a = AssertUtil().execute_sql("SELECT email FROM pw_user WHERE uid = 1")
    print(a)
    print(type(a))

redis">redis

python">class AssertUtil:
    # 连接redis
    def connect(self, host, port, password, db):
        self.connection = redis.Redis(
            host=host,
            port=port,
            password=password,
            db=db,
            decode_responses=True  # 将字节数据解码为字符串
        )
    # 操作redis
    def execute_command(self, command, *args):
        """
        执行Redis命令
        :param command: Redis命令
        :param args: 命令参数
        :return: 执行结果
        """
        if not hasattr(self, 'connection'):
            raise Exception("redis未连接")
        res = getattr(self.connection, command)(*args)

        # 关闭连接
        self.connection.close()
        return res

if __name__ == "__main__":
    redis_connector = AssertUtil()
    redis_connector.connect(host="192.168.0.1", port=6379, password="111111", db=0)
    # String 操作
    redis_connector.execute_command("set", "name", "4")
    print('string:'+ redis_connector.execute_command('get','name'))
    # list操作
    redis_connector.execute_command("lpush", "mylist", "item3","item4")
    redis_connector.execute_command("lpop", "mylist")
    print(redis_connector.execute_command('lrange', 'mylist',0,-1))
    # Hash 操作
    redis_connector.execute_command("hset", "myhash", "field1", "value1")
    print('hash:'+ redis_connector.execute_command("hget", "myhash", "field1"))
    print(redis_connector.execute_command('hgetall', 'myhash'))
    # Set 操作
    redis_connector.execute_command("sadd", "myset", "value1", "value2")
    print(redis_connector.execute_command("smembers", "myset"))
    # ZSet 操作
    redis_connector.execute_command("zadd", "myzset", {"value1": 1}, {"value2": 2})
    print(redis_connector.execute_command("zrangebyscore", "myzset", 0, 2))
    # 删除操作
    redis_connector.execute_command("delete","myhash")

mongo

python">class AssertUtil:
    def conn_mongo(self, database, host, port, username, password, auth_source):
    self.database = database
    self.client = MongoClient(
        host=host,
        port=port,
        username=username,
        password=password,
        authSource=auth_source
    )
    self.db = self.client[self.database]

def execute_mongo(self,collection, command,reslove, *args):
    """
    执行MongoDB命令
    :param database: 数据库名称
    :param collection: 集合名称
    :param command: MongoDB命令
    :param args: 命令参数
    :return: 执行结果
    """
    if not hasattr(self, 'client'):
        raise Exception("MongoDB未连接")
    self.col = self.db[collection]
    try:
        func = getattr(self.col, command)
        result = func(*args)
        if callable(reslove):
            return reslove(result)
        return result
    finally:
        self.client.close()
if __name__ == "__main__":
    mongo_connector = AssertUtil()
    mongo_connector.conn_mongo(database="test", host="192.168.0.1", port=27017, username="admin", password="1111", auth_source="admin")
    # 插入文档
    mongo_connector.execute_mongo("insert_one",None,{"model_id": "gpt","nickname": "ces","avatar": "1111"})
    # 查询文档
    print(mongo_connector.execute_mongo("test1","find_one",None,{"model_id": "gpt-3.5-turbo"}))
    # 查询多条文档
    def reslove(results):
        for result in results:
            print(result)
    res = mongo_connector.execute_mongo("test1","find", reslove,{"model_id": "gpt"})
    # 更新文档
    mongo_connector.execute_mongo("test1","update_one", None,{"model_id": "gpt11"}, {"$set": {"nickname": "aaaaa"}})
    # 删除文档
    mongo_connector.execute_mongo("test1","delete_one",  None,{"model_id": "model_id"})


http://www.niftyadmin.cn/n/5383144.html

相关文章

Qt框架中的主要模块

接下来我们看看Qt的主要模块,Qt主要分成了三个大的部分: Qt Essentials(基本模块):该部分定义了Qt在所有平台上的基础组件,基本模块是通用的,对大多数Qt应用程序都很有用。Qt Add-Ons&#xff…

【C++】日期类的实现(对于类与对象的练习)

文章目录 实现一个类的一般步骤构造函数流插入&#xff08;<<&#xff09;和流提取(>>)运算符重载赋值运算符重载比较运算符重载1.小于&#xff08;<&#xff09;运算符重载2.等于&#xff08;&#xff09;运算符重载3.其它比较运算符重载 算术运算符重载1.加等…

SSL VPN安全网关

产品介绍 沃通SSL VPN安全网关是以现代密码技术为核心并具有物理安全保护措施的一体化硬件设备。产品遵循国家GM/T 0025 《SSL VPN 网关产品规范》集成了国产密码算法&#xff08;SM1/SM2/SM3/SM4&#xff09;和SSL、IPSec安全协议&#xff0c;并通过了相关权威资质认证&#…

Unity2023.1.19没有PBR Graph?

Unity2023.1.19没有PBR Graph? 关于Unity2023.1.19没有PBR graph的说法,我没看见管方给出的答案,百度则提到了Unity2020版之后Shader Graph的“全新更新”,之前也没太注意版本的区别,以后项目尽量都留心一下。 之前文章说过,孪生智慧项目推荐使用URP渲染管线,以上的截…

vscode导入其他文件夹下报错No Module

在项目中创建haunch.json如下 { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid830387 "version": "0.2.0&quo…

grid新建主从一对多

目录 总结一、步骤前端1.第一步-编写tabs的modelBody2.第二步编辑表扩展js 后端--重写表的add和Update方法1.第一步 总结 编写tabs的modelBody后编辑表扩展js在重写后端partial的Service 一、步骤 前端 1.第一步-编写tabs的modelBody 复制下面代码该改的改 <template&…

C语言——设 N 是一个四位数,它的 9 倍恰好是其反序数,求 N。反序数就是将整数的数字倒过来形成的整数。例如:1234 的反序数是 4321。

一、题目 设 N 是一个四位数&#xff0c;它的 9 倍恰好是其反序数&#xff0c;求 N。反序数就是将整数的数字倒过来形成的整数。例如:1234 的反序数是 4321。 二、解答 #include <stdio.h>int reverse(int num) {int rev 0;while (num > 0){rev rev * 10 num % 1…

ChatGPT-用ChatGPT指令,自学任何领域的系统知识

1. 指令位置 Github仓库&#xff1a;Mr Ranedeer AI Tutor 但是需要开通chatgtp plus版本&#xff0c;并且打开代码解释器 2 使用 学习内容 开始学习 GPT甚至可以给你思考题&#xff0c;给出的答案还能进行评价 配置 通过配置表修改 深度 学习风格 沟通风格 语气风格 …