首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >人工智能之编程进阶 Python高级:第七章 数据库类模块

人工智能之编程进阶 Python高级:第七章 数据库类模块

原创
作者头像
咚咚王
发布2025-11-19 19:15:12
发布2025-11-19 19:15:12
540
举报

人工智能之编程进阶 Python高级

第七章 数据库类模块


前言

本文主要讲述两类数据库,关系型数据库mysql和非关系型数据库mongodb的常见操作步骤。


🗄️ 一、MySQL(关系型数据库)

1. 安装(本地开发)

Windows / macOS:

  • 推荐使用 MySQL Installer(官方图形化安装)
  • 或用包管理器:
    • macOS: brew install mysql
    • Windows (WSL): sudo apt install mysql-server

启动服务:

代码语言:bash
复制
# macOS (Homebrew)
brew services start mysql

# Linux
sudo systemctl start mysql

初始设置:

代码语言:sql
复制
-- 登录(默认无密码或 root 密码是你设的)
mysql -u root -p

-- 创建数据库和用户(可选)
CREATE DATABASE testdb;
CREATE USER 'dev'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON testdb.* TO 'dev'@'localhost';
FLUSH PRIVILEGES;

2. Python 连接

安装驱动:

代码语言:bash
复制
pip install PyMySQL      # 纯 Python 实现,推荐
# 或
pip install mysql-connector-python  # 官方驱动

连接代码(以 PyMySQL 为例):

代码语言:python
复制
import pymysql

conn = pymysql.connect(
    host='localhost',
    user='dev',          # 或 'root'
    password='123456',
    database='testdb',
    charset='utf8mb4'
)
cursor = conn.cursor()

✅ 建议搭配 ORM:SQLAlchemy(更安全、易维护)


3. 增删改查(CRUD)

先建表:

代码语言:sql
复制
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100),
    age INT
);

✅ 插入(Create)

代码语言:python
复制
cursor.execute(
    "INSERT INTO users (name, email, age) VALUES (%s, %s, %s)",
    ("Alice", "alice@example.com", 30)
)
conn.commit()  # 必须提交!

🔍 查询(Read)

代码语言:python
复制
cursor.execute("SELECT * FROM users WHERE age > %s", (25,))
rows = cursor.fetchall()
for row in rows:
    print(f"ID: {row[0]}, Name: {row[1]}")

✏️ 更新(Update)

代码语言:python
复制
cursor.execute(
    "UPDATE users SET age = %s WHERE name = %s",
    (31, "Alice")
)
conn.commit()

❌ 删除(Delete)

代码语言:python
复制
cursor.execute("DELETE FROM users WHERE name = %s", ("Alice",))
conn.commit()

⚠️ 注意:所有写操作(INSERT/UPDATE/DELETE)都要 conn.commit()!


📦 二、MongoDB(文档型 NoSQL 数据库)

1. 安装(本地开发)

官方方式:

启动服务:

代码语言:bash
复制
# macOS (Homebrew)
brew services start mongodb-community

# 默认数据目录:/data/db(需提前创建并赋权限)
sudo mkdir -p /data/db
sudo chown -R `id -un` /data/db

验证:

代码语言:bash
复制
mongosh    # 进入交互 shell
> show dbs

2. Python 连接

安装驱动:

代码语言:bash
复制
pip install pymongo

连接代码:

代码语言:python
复制
from pymongo import MongoClient

client = MongoClient('mongodb://localhost:27017/')  # 默认端口 27017
db = client['myapp']          # 数据库名(不存在会自动创建)
collection = db['users']      # 集合名(相当于“表”)

💡 MongoDB 不需要提前建库/建集合,首次插入时自动创建。


3. 增删改查(CRUD)

MongoDB 中的数据是 BSON(类似 JSON)文档

✅ 插入(Create)

代码语言:python
复制
# 插入单个文档
result = collection.insert_one({
    "name": "Bob",
    "email": "bob@example.com",
    "age": 28,
    "hobbies": ["gaming", "music"]
})
print("Inserted ID:", result.inserted_id)

# 插入多个
collection.insert_many([
    {"name": "Charlie", "age": 35},
    {"name": "Diana", "tags": ["admin"]}
])

🔍 查询(Read)

代码语言:python
复制
# 查所有
for doc in collection.find():
    print(doc)

# 条件查询(年龄 > 25)
for doc in collection.find({"age": {"$gt": 25}}):
    print(doc["name"])

# 只返回部分字段
doc = collection.find_one({"name": "Bob"}, {"name": 1, "email": 1, "_id": 0})
print(doc)  # {'name': 'Bob', 'email': 'bob@example.com'}

✏️ 更新(Update)

代码语言:python
复制
# 更新第一个匹配项
collection.update_one(
    {"name": "Bob"},
    {"$set": {"age": 29}, "$push": {"hobbies": "reading"}}
)

# 更新所有匹配项
collection.update_many(
    {"age": {"$lt": 30}},
    {"$set": {"young": True}}
)

❌ 删除(Delete)

代码语言:python
复制
# 删除一个
collection.delete_one({"name": "Bob"})

# 删除多个
collection.delete_many({"young": True})

# 清空整个集合
collection.delete_many({})

✅ MongoDB 所有操作都是自动提交的,无需手动 commit。


🔍 三、MySQL vs MongoDB 对比总结

项目

MySQL

MongoDB

类型

关系型(RDBMS)

文档型(NoSQL)

数据结构

表(固定列)

集合(灵活 JSON 文档)

Schema

强 Schema(必须先定义)

动态 Schema(随时变)

查询语言

SQL

MongoDB 查询语法(字典风格)

事务

✅ 强 ACID(默认支持)

✅ 多文档事务(4.0+,但慎用)

扩展性

垂直扩展为主,分片复杂

天然支持水平分片(Sharding)

性能特点

复杂 JOIN 快,写入中等

写入快,高吞吐,JOIN 弱

适用场景

订单、支付、财务等强一致性系统

日志、内容管理、用户画像、IoT 等灵活场景

Python 驱动

PyMySQL,mysql-connector

pymongo

是否需要预建表

✅ 是

❌ 否


✅ 四、怎么选?一句话建议

  • 选 MySQL: 如果你的数据关系明确、不能出错(比如银行转账、电商订单),或者团队熟悉 SQL。
  • 选 MongoDB: 如果你的数据结构经常变、需要快速迭代(比如 App 用户配置、行为日志),或者讨厌写复杂的表结构。

💡 现实建议: 很多公司 两者都用!核心业务用 MySQL(保安全) 灵活数据用 MongoDB(提效率)


🧰 附:常用命令速查

操作

MySQL

MongoDB

启动服务

sudo systemctl start mysql

brew services start mongodb-community

进入命令行

mysql -u root -p

mongosh

查数据库

SHOW DATABASES;

show dbs

切换库

USE testdb;

use myapp

查表/集合

SHOW TABLES;

show collections


资料关注

公众号:咚咚王

《Python编程:从入门到实践》

《利用Python进行数据分析》

《算法导论中文第三版》

《概率论与数理统计(第四版) (盛骤) 》

《程序员的数学》

《线性代数应该这样学第3版》

《微积分和数学分析引论》

《(西瓜书)周志华-机器学习》

《TensorFlow机器学习实战指南》

《Sklearn与TensorFlow机器学习实用指南》

《模式识别(第四版)》

《深度学习 deep learning》伊恩·古德费洛著 花书

《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》

《深入浅出神经网络与深度学习+(迈克尔·尼尔森(Michael+Nielsen) 》

《自然语言处理综论 第2版》

《Natural-Language-Processing-with-PyTorch》

《计算机视觉-算法与应用(中文版)》

《Learning OpenCV 4》

《AIGC:智能创作时代》杜雨+&+张孜铭

《AIGC原理与实践:零基础学大语言模型、扩散模型和多模态模型》

《从零构建大语言模型(中文版)》

《实战AI大模型》

《AI 3.0》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 人工智能之编程进阶 Python高级
  • 前言
  • 🗄️ 一、MySQL(关系型数据库)
    • 1. 安装(本地开发)
      • Windows / macOS:
      • 启动服务:
      • 初始设置:
    • 2. Python 连接
    • 3. 增删改查(CRUD)
      • ✅ 插入(Create)
      • 🔍 查询(Read)
      • ✏️ 更新(Update)
      • ❌ 删除(Delete)
  • 📦 二、MongoDB(文档型 NoSQL 数据库)
    • 1. 安装(本地开发)
      • 官方方式:
      • 启动服务:
      • 验证:
    • 2. Python 连接
    • 3. 增删改查(CRUD)
      • ✅ 插入(Create)
      • 🔍 查询(Read)
      • ✏️ 更新(Update)
      • ❌ 删除(Delete)
  • 🔍 三、MySQL vs MongoDB 对比总结
  • ✅ 四、怎么选?一句话建议
  • 🧰 附:常用命令速查
  • 资料关注
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档