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

Python高级: 数据库类模块

一、MySQL(关系型数据库)

1. 安装(本地开发)

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

代码语言:bash

AI代码解释

# macOS (Homebrew) brew services start mysql # Linux sudo systemctl start mysql
初始设置:

代码语言:sql

AI代码解释

-- 登录(默认无密码或 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

AI代码解释

pip install PyMySQL # 纯 Python 实现,推荐 # 或 pip install mysql-connector-python # 官方驱动

连接代码(以PyMySQL为例):

代码语言:python

AI代码解释

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

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


3. 增删改查(CRUD)

先建表:

代码语言:sql

AI代码解释

CREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100) NOT NULL, email VARCHAR(100), age INT );
✅ 插入(Create)

代码语言:python

AI代码解释

cursor.execute( "INSERT INTO users (name, email, age) VALUES (%s, %s, %s)", ("Alice", "alice@example.com", 30) ) conn.commit() # 必须提交!
🔍 查询(Read)

代码语言:python

AI代码解释

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

AI代码解释

cursor.execute( "UPDATE users SET age = %s WHERE name = %s", (31, "Alice") ) conn.commit()
❌ 删除(Delete)

代码语言:python

AI代码解释

cursor.execute("DELETE FROM users WHERE name = %s", ("Alice",)) conn.commit()

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


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

1. 安装(本地开发)

官方方式:
  • 下载社区版:https://www.mongodb.com/try/download/community
  • 或用包管理器:
    • macOS:brew tap mongodb/brew && brew install mongodb-community
    • Windows: 用 MSI 安装包
    • Linux: 按官方文档配置 apt/yum 源
启动服务:

代码语言:bash

AI代码解释

# macOS (Homebrew) brew services start mongodb-community # 默认数据目录:/data/db(需提前创建并赋权限) sudo mkdir -p /data/db sudo chown -R `id -un` /data/db
验证:

代码语言:bash

AI代码解释

mongosh # 进入交互 shell > show dbs

2. Python 连接

安装驱动:

代码语言:bash

AI代码解释

pip install pymongo

连接代码:

代码语言:python

AI代码解释

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

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


3. 增删改查(CRUD)

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

✅ 插入(Create)

代码语言:python

AI代码解释

# 插入单个文档 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

AI代码解释

# 查所有 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

AI代码解释

# 更新第一个匹配项 collection.update_one( {"name": "Bob"}, {"$set": {"age": 29}, "$push": {"hobbies": "reading"}} ) # 更新所有匹配项 collection.update_many( {"age": {"$lt": 30}}, {"$set": {"young": True}} )
❌ 删除(Delete)

代码语言:python

AI代码解释

# 删除一个 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



http://www.jsqmd.com/news/466557/

相关文章:

  • 美胸-年美-造相Z-TurboGPU能效比:每瓦特算力生成图像数量行业领先17%
  • c语言和python区别
  • 新“顶流”出道!让智源Robo,承包你的科研日常!
  • 2026年知名的现场机加工钻孔镗孔公司推荐:现场机加工管道坡口冷切割生产厂家推荐几家 - 行业平台推荐
  • internlm2-chat-1.8b在研发团队的应用:自动生成PR描述+技术文档初稿案例
  • oracle使用PLSQL导出表数据
  • C++底层学习精进:模板进阶
  • 4.ChatGPT辅助产品数据分析
  • 分析2026年超声波切割机供应企业,常州中禹激光装备费用多少 - 工业品网
  • 【初学者入门C语言】之for循环语句
  • 基于Springboot的新疆特色文化在线教育平台推荐系(Springboot,vue,mysql,协同过滤算法,智能AI接口)
  • 南昌2026年全案设计装修公司排名,好用的品牌有哪些 - 工业设备
  • 2026年AI汽车发展的“中国方案”:从技术跟随到全球引领的范式革命
  • 这样使用雪花算法被客户喷了!
  • 大润发购物卡回收别乱选!这波操作让闲置卡秒变现金流 - 京顺回收
  • 【SSP之路-5-重要节点】LFU
  • PageHelper 解析及实现原理
  • 对比VBA学习Python,让办公更自动化!
  • 很多人卡在这一步:OpenClaw不会安装?这个一键版解决了
  • 【Linux】进程 PCB、task_struct、fork初识
  • 基于二进制的遗传算法的考虑排放目标和输电损耗的经济调度研究(Python代码实现)
  • 扫地机机器人研发岗深度解析与技术指南
  • 140个企业级实战场景剖析以及AI大模型项目实战
  • 函数式编程思想
  • 2026钻床市场热门:这些工厂钻床受追捧,目前优质的钻床品牌技术引领与行业解决方案解析 - 品牌推荐师
  • 汇源全屋定制作为全屋定制专业制造商,价格大概多少钱? - 工业推荐榜
  • 基于改进粒子群算法的含碳捕集微网多时间尺度低碳经济调度(Matlab代码实现)
  • Flutter 三方库 system_resources_2 的鸿蒙化适配指南 - 实时监控鸿蒙端侧 CPU 负载、内存占用与系统资源动态感知
  • 星焰家居这个不锈钢全屋定制厂商品牌靠不靠谱,值得推荐吗? - myqiye
  • 2026年热门的CNC 精密压铸加工公司推荐:医疗设备精密压铸加工/智能家居精密压铸加工采购指南厂家怎么选 - 行业平台推荐