Python与数据库的交互问题小结

 更新时间:2021年12月25日 11:11:13   作者:A-L-Kun  
这篇文章主要介绍了Python与数据库的交互,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

MongoDB

安装模块pip install pymongo

连接数据库

import pymongo
 
client = pymongo.MongoClient()
db = client["database_name"]  # 跟上数据库名
collection = db["set_name"]  # 指定集合名

增删改查

添加--->insert_one | insert_many

collection.insert_one({"name":"kongshang","age":12})

查找--->find | find_one

collection.find()

注意要用list转换得到的数据

修改--->update_one | update_many

collection.update_one({"name":"kongshang"},{'$set':{"age":13}})

删除--->delete_one | delete_many

collection.delete_one({"name":"kongshang"})

封装

import pymongo
 
 
class MyMonDB:
    def __init__(self, database, collection):  # 数据库及集合
        self.client = pymongo.MongoClient()  # 连接数据库使用
        self.db = self.client[database]  # 指定使用的数据库
        self.col = self.db[collection]  # 指定使用的集合
 
    def insert(self, data, onlyOne=True):  # onlyOne用来控制插入单条还是多条数据
        if onlyOne:
            self.col.insert_one(data)
        else:
            self.col.insert_many(data)
    
        def find(self, query=None, onlyOne=True):  # query是查询条件
        if onlyOne:
            ret = self.col.find_one(query)
            return ret
        else:
            ret = self.col.find(query)
            return list(ret)
 
    def update(self, data_old, data_new, onlyOne=True):
        if onlyOne:
            self.col.update_one(data_old, {"$set": data_new})
        else:
            self.col.update_many(data_old, {"$set": data_new})
 
    def delete(self, data, onlyOne=True):
        if onlyOne:
            self.col.delete_one(data)
        else:
            self.col.delete_many(data) 

注意该数据库对大小写敏感

MySQL

安装模块pip install pymysql

连接数据库

import pymysql
# 连接mysql
db_config = {
    "host": "127.0.0.1",
    "port": 3306,
    "user": "admin",
    "password": "qwe123",
    "db": "stu",  # 指定操作的数据库
    "charset": "utf8"
}
 
conn = pymysql.connect(**db_config)  # mysql登录 **是字典拆包
print(conn)

执行操作

cur = conn.cursor()  # 返回一个执行数据库命令游标对象,通过游标对象执行SQL命令
cur.execute("INSERT INTO stu (id, name) VALUES (1, 'nihao'),(2, 'ci')")  # 执行SQL命令执行插入命令
conn.commit()  # 事务,提交保存
cur.close()  # 关闭游标对象
conn.close()  # 关闭数据库

查询数据

cur.execute("SELECT * FROM stu")  # 执行SQL命令
# print(list(cur))
# print(cur.fetchone())  # 查询单条
# print(cur.fetchmany(3))  # 查询多条
print(cur.fetchall())  # 查询所有

异常处理

try:
    cur.execute("INSERT INTO stu (id, name) VALUES (1, 'nihao'), (2, 'ci')")
except Exception as e:
    print(e)
    conn.rollback()  # 事务回滚
else:
    conn.commit()  # 事务提交
finally:
    cur.close()  # 关闭游标对象
    conn.close()  # 关闭数据库

Redis

安装模块pip install redis

连接数据库

import redis
 
# 登录数据库
# host ip地址
# decode_responses get获得键值时 True返回字符串数据,默认是False二进制数据
# db 指定数据库,默认为1
red = redis.StrictRedis(host="127.0.0.1", decode_responses=True, db=2)

执行操作

# 字符串
red.set("num", 1)
print(red.get("num"))
print(red.type("num"))
red.delete('num')
# 综上,调用Redis数据库的方法是red.[输入redis数据库操作命令]()

到此这篇关于Python与数据库的交互的文章就介绍到这了,更多相关Python数据库交互内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python实现五子棋小游戏

    python实现五子棋小游戏

    这篇文章主要介绍了python实现五子棋小游戏,使用pygame模块编写一个五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • 使用 pytorch 创建神经网络拟合sin函数的实现

    使用 pytorch 创建神经网络拟合sin函数的实现

    这篇文章主要介绍了使用 pytorch 创建神经网络拟合sin函数的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • python进行图片相似度对比的两种实现方法

    python进行图片相似度对比的两种实现方法

    Python提供了一些库和工具可以用于图片的相似度比对,本文就详细的介绍了两种实现方法,感知哈希和结构相似性,下面就来介绍一下,感兴趣的可以了解一下
    2023-10-10
  • 在macOS上搭建python环境的实现方法

    在macOS上搭建python环境的实现方法

    今天小编就为大家分享一篇在macOS上搭建python环境的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python中OpenCV Tutorials 20  高动态范围成像的实现步骤

    Python中OpenCV Tutorials 20  高动态范围成像的实现步骤

    这篇文章主要介绍了OpenCV Tutorials 20 - 高动态范围成像,本文还给大家展示了一种称为曝光融合的替代方法,它可以产生低动态范围的图像,需要的朋友可以参考下
    2022-06-06
  • Ubuntu16安装Python3.9的实现步骤

    Ubuntu16安装Python3.9的实现步骤

    这篇文章主要介绍了Ubuntu16安装Python3.9的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • pyside6-uic生成py代码中文为unicode(乱码)的问题解决方案

    pyside6-uic生成py代码中文为unicode(乱码)的问题解决方案

    这篇文章主要介绍了如何解决pyside6-uic生成py代码中文为unicode(乱码)的问题,文中通过代码和图文介绍的非常详细,对大家解决问题有一定的帮助,需要的朋友可以参考下
    2024-02-02
  • Python+Pygame实现简单的射击小游戏

    Python+Pygame实现简单的射击小游戏

    要说什么游戏能够获得大家的喜爱,唯射击游戏莫属!本文将利用Python和Pygame库制作一个简单的射击小游戏,感兴趣的小伙伴可以了解一下
    2022-04-04
  • 详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用

    详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用

    这篇文章主要介绍了详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Python下的subprocess模块的入门指引

    Python下的subprocess模块的入门指引

    这篇文章主要介绍了Python下的subprocess模块的入门指引,subprocess模块被用于Python的多线程编程,需要的朋友可以参考下
    2015-04-04

最新评论