当前位置: 首页 > news >正文

【30天玩转python】数据库操作

数据库操作

数据库是应用程序中用于存储和管理数据的核心组件。Python 提供了多种与数据库交互的方式,支持不同类型的数据库,包括关系型数据库(如 MySQL、PostgreSQL)和 NoSQL 数据库(如 MongoDB)。在这篇文章中,我们将介绍 Python 如何与常见的数据库进行操作。


1. 关系型数据库

关系型数据库(Relational Database)使用表的形式存储数据,并通过 SQL(结构化查询语言)来进行数据查询和操作。常见的关系型数据库包括 MySQL、PostgreSQL、SQLite 等。

1.1 使用 SQLite

SQLite 是一种轻量级的关系型数据库,Python 内置了对 SQLite 的支持,无需安装其他软件或驱动。

创建 SQLite 数据库并执行基本操作

import sqlite3# 连接到 SQLite 数据库,如果数据库不存在则会自动创建
conn = sqlite3.connect('example.db')# 创建一个游标对象,用于执行 SQL 语句
cursor = conn.cursor()# 创建一个表
cursor.execute('''CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,age INTEGER NOT NULL)''')# 插入数据
cursor.execute("INSERT INTO users (name, age) VALUES ('Alice', 30)")
cursor.execute("INSERT INTO users (name, age) VALUES ('Bob', 25)")# 提交事务
conn.commit()# 查询数据
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()for row in rows:print(row)# 关闭连接
conn.close()

代码说明:

  • 我们首先连接到一个名为 example.db 的 SQLite 数据库。
  • 使用 SQL 语句创建一个名为 users 的表,包含 idnameage 三列。
  • 然后,插入了两条数据并通过 SELECT 语句查询数据库中的所有数据。
  • 最后关闭数据库连接。
1.2 使用 MySQL

MySQL 是一种常用的开源关系型数据库管理系统。要使用 MySQL 进行 Python 编程,你需要安装 mysql-connector-python 库:

pip install mysql-connector-python

连接 MySQL 数据库并执行基本操作

import mysql.connector# 连接到 MySQL 数据库
conn = mysql.connector.connect(host="localhost",user="root",password="your_password",database="test_db"
)# 创建一个游标对象
cursor = conn.cursor()# 创建一个表
cursor.execute('''CREATE TABLE IF NOT EXISTS employees (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255) NOT NULL,salary DECIMAL(10, 2) NOT NULL)''')# 插入数据
cursor.execute("INSERT INTO employees (name, salary) VALUES (%s, %s)", ('John Doe', 50000.00))
cursor.execute("INSERT INTO employees (name, salary) VALUES (%s, %s)", ('Jane Smith', 60000.00))# 提交事务
conn.commit()# 查询数据
cursor.execute("SELECT * FROM employees")
rows = cursor.fetchall()for row in rows:print(row)# 关闭连接
conn.close()

代码说明:

  • 使用 mysql.connector.connect 函数连接到 MySQL 数据库。
  • 使用 CREATE TABLE 创建一个名为 employees 的表。
  • 使用 INSERT INTO 插入数据,并通过 SELECT 查询表中的所有数据。
1.3 使用 PostgreSQL

PostgreSQL 是另一种强大的开源关系型数据库。要使用 PostgreSQL 进行 Python 编程,你需要安装 psycopg2 库:

pip install psycopg2

连接 PostgreSQL 数据库并执行基本操作

import psycopg2# 连接到 PostgreSQL 数据库
conn = psycopg2.connect(host="localhost",database="test_db",user="postgres",password="your_password"
)# 创建一个游标对象
cursor = conn.cursor()# 创建一个表
cursor.execute('''CREATE TABLE IF NOT EXISTS products (id SERIAL PRIMARY KEY,name VARCHAR(255) NOT NULL,price NUMERIC(10, 2) NOT NULL)''')# 插入数据
cursor.execute("INSERT INTO products (name, price) VALUES (%s, %s)", ('Laptop', 1200.00))
cursor.execute("INSERT INTO products (name, price) VALUES (%s, %s)", ('Phone', 800.00))# 提交事务
conn.commit()# 查询数据
cursor.execute("SELECT * FROM products")
rows = cursor.fetchall()for row in rows:print(row)# 关闭连接
conn.close()

代码说明:

  • 使用 psycopg2.connect 函数连接到 PostgreSQL 数据库。
  • 使用 SQL 语句创建 products 表,并插入产品数据。
  • 使用 SELECT 查询数据并输出。

2. NoSQL 数据库

NoSQL 数据库以非表格的方式存储数据,适合处理大规模数据集。常见的 NoSQL 数据库包括 MongoDB、Redis 等。

2.1 使用 MongoDB

MongoDB 是一种流行的 NoSQL 数据库,使用 BSON(类似 JSON)格式来存储数据。要使用 MongoDB 与 Python 进行交互,需要安装 pymongo 库:

pip install pymongo

连接 MongoDB 并执行基本操作

from pymongo import MongoClient# 连接到 MongoDB 数据库
client = MongoClient('localhost', 27017)# 选择数据库和集合
db = client['test_db']
collection = db['users']# 插入文档
user_data = {"name": "Alice", "age": 30}
collection.insert_one(user_data)# 查询文档
for user in collection.find():print(user)# 更新文档
collection.update_one({"name": "Alice"}, {"$set": {"age": 31}})# 删除文档
collection.delete_one({"name": "Alice"})# 关闭连接
client.close()

代码说明:

  • 使用 MongoClient 连接到 MongoDB 服务器,并选择 test_db 数据库中的 users 集合。
  • 插入一个用户文档,并使用 find 方法查询所有文档。
  • 更新用户文档中的年龄字段,并删除用户。

3. 数据库连接池

对于大规模的应用程序,使用数据库连接池能够提高性能,避免每次请求都需要重新建立数据库连接。Python 中的 SQLAlchemyDBUtils 库提供了数据库连接池的支持。

3.1 使用 SQLAlchemy 连接池

SQLAlchemy 是一个强大的 ORM 库,同时支持数据库连接池功能。

pip install sqlalchemy

创建 MySQL 连接池并执行操作

from sqlalchemy import create_engine# 创建连接池
engine = create_engine('mysql+mysqlconnector://root:password@localhost/test_db', pool_size=5, max_overflow=10)# 执行数据库操作
with engine.connect() as conn:result = conn.execute("SELECT * FROM employees")for row in result:print(row)

4. 小结

  • Python 提供了多种方式与数据库进行交互,支持关系型数据库(如 SQLite、MySQL、PostgreSQL)和 NoSQL 数据库(如 MongoDB)。
  • 使用 sqlite3 模块可以轻松操作 SQLite 数据库,适合轻量级应用。
  • 通过第三方库 mysql-connector-pythonpsycopg2,可以连接和操作 MySQL 和 PostgreSQL 数据库。
  • pymongo 库提供了与 MongoDB 的接口,适合 NoSQL 数据库操作。
  • 数据库连接池提高了大规模应用的性能,使用 SQLAlchemy 可以实现连接池的管理。

掌握这些数据库操作方法,能让你在应用开发中灵活选择合适的数据库,并高效管理和处理数据。

http://www.lryc.cn/news/442336.html

相关文章:

  • PTT:Point Tree Transformer for Point Cloud Registration 论文解读
  • C++速通LeetCode中等第7题-和为K的子数组(巧用前缀和)
  • 【读书笔记-《30天自制操作系统》-23】Day24
  • XML:DOM4j解析XML
  • 15.5 创建监控控制平面的service
  • 【Docker Nexus3】maven 私库
  • Docker本地部署Chatbot Ollama搭建AI聊天机器人并实现远程交互
  • MySQL:用户管理
  • 论文《Mixture of Weak Strong Experts on Graphs》笔记
  • 【诉讼流程-健身房-违约-私教课-诉讼书提交流程-民事诉讼-自我学习-铺平通往法律的阶梯-讲解(3)】
  • 数据结构(Day14)
  • Paragon NTFS for Mac和Tuxera NTFS for Mac,那么两种工具有什么区别呢?
  • HashTable结构体数组实现
  • Python 管理 AWS ElastiCache 告警
  • 【无人机设计与控制】四旋翼无人机俯仰姿态保持模糊PID控制(带说明报告)
  • [数据集][目标检测]不同颜色的安全帽检测数据集VOC+YOLO格式7574张5类别
  • 确保 App 跟踪透明度权限:Flutter 中的实践
  • 李沐 过拟合和欠拟合【动手学深度学习v2】
  • Go Testify学习与使用
  • Word中引用参考文献和公式编号的方法
  • [数据集][目标检测]智慧养殖场肉鸡目标检测数据集VOC+YOLO格式3548张1类别
  • Vision Transform—用于大规模图像分类的Transformers架构
  • 内核驱动开发之系统移植
  • 前端在网络安全攻击问题上能做什么?
  • IntelliJ IDEA 创建 HTML 项目教程
  • YOLOv9改进系列,YOLOv9主干网络替换为RepViT (CVPR 2024,清华提出,独家首发),助力涨点
  • VBS学习1 - 语法、内置函数、内置对象
  • 11 vue3之插槽全家桶
  • Excel 基础知识-操作手册1
  • Python 类的继承