使用ORM模型操作MySQL数据库:Python爬虫数据持久化实践

源码分享

https://docs.qq.com/sheet/DUHNQdlRUVUp5Vll2?tab=BB08J2

在Python爬虫开发中,数据持久化是一个重要的步骤。通常,我们会将爬取的数据保存到数据库中。本篇博客将介绍如何使用对象关系映射(ORM)模型在Python中操作MySQL数据库,以便更加高效和安全地管理爬虫数据。

ORM简介

ORM即对象关系映射,它是一种数据库抽象技术,使得开发者能够以编程语言中的对象的方式来操作数据库。Python社区中流行的ORM框架有SQLAlchemy和Django ORM等。

SQLAlchemy入门

SQLAlchemy是Python中最著名的ORM工具之一,它提供了强大的数据库操作能力。以下是如何使用SQLAlchemy操作MySQL数据库的详细步骤。

安装必要库

首先,确保已经安装了​​SQLAlchemy​​和MySQL的Python适配器,例如​​mysql-connector-python​​:

复制代码
pip install sqlalchemy mysql-connector-python

定义模型

定义一个模型,它映射到MySQL数据库中的一个表。例如,如果您的爬虫正在爬取书籍信息,您可能会有一个模型如下:

复制代码
from sqlalchemy import create_engine, Column, Integer, String, Float
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# 定义基类
Base = declarative_base()

# 定义Book模型,它对应于MySQL中的一个表
class Book(Base):
    __tablename__ = 'books'  # 数据库中表的名字
    id = Column(Integer, primary_key=True)
    title = Column(String(200))
    author = Column(String(100))
    ratings = Column(Float)

    def __repr__(self):
        return f"<Book(title={self.title}, author={self.author}, ratings={self.ratings})>"

连接数据库

创建一个与MySQL数据库的连接,并建立一个Session来操作数据库。

复制代码
# 创建连接到数据库的引擎
engine = create_engine('mysql+mysqlconnector://user:password@localhost:3306/dbname')

# 创建所有表(如果它们还不存在)
Base.metadata.create_all(engine)

# 创建Session类
Session = sessionmaker(bind=engine)

# 创建实际的Session对象
session = Session()

请将​​user​​, ​​password​​, ​​localhost​​, ​​3306​​和​​dbname​​替换为实际的MySQL连接参数。

操作数据库

现在可以通过创建模型的实例来插入新记录,通过查询来获取数据,通过修改模型实例来更新记录,或者删除记录。

复制代码
# 插入新书籍
new_book = Book(title="Python编程:从入门到实践", author="Eric Matthes", ratings=4.5)
session.add(new_book)
session.commit()

# 查询书籍数据
books = session.query(Book).filter_by(author="Eric Matthes").all()
for book in books:
    print(book)

# 更新书籍数据
book_to_update = session.query(Book).get(1)  # 假设id为1的书籍存在
if book_to_update:
    book_to_update.ratings = 4.7
    session.commit()

# 删除书籍数据
book_to_delete = session.query(Book).get(1)
if book_to_delete:
    session.delete(book_to_delete)
    session.commit()

结语

ORM提供了一种方便的方式来操作数据库,使得数据库操作更加直观和安全。在爬虫项目中,使用ORM可以提高代码的可读性和可维护性,并且有助于避免SQL注入这样的安全问题。本篇博客介绍了如何使用SQLAlchemy框架与MySQL交互,希望能帮助你在接下来的爬虫项目中更高效地处理数据。

使用ORM模型操作数据库是现代Web开发的最佳实践之一,而在爬虫开发中同样适用。始终记住,每一个爬虫都应当负责任地对待数据和网络资源。祝您的爬虫项目顺利!

相关推荐
happylifetree10 小时前
Python70:核心语法-函数进阶-案例2
python
王中阳Go10 小时前
两个入口答案不一致先别调模型:6 行入口口径对账表(附脚本)
人工智能·后端·python·大语言模型·1024程序员节
BK贝壳11 小时前
bool-hybrid-array 落盘我只认 .bha:用 Create_BHA / Ask_BHA 做布尔数组序列化
数据结构·python·numpy·1024程序员节
Sakura_j_h_11 小时前
Python 在定时任务里输出 emoji,UnicodeEncodeError 从哪来
开发语言·字符编码·windows·python·定时任务
不脱发的程序猿12 小时前
纳指ETF量化策略
数据库·人工智能·1024程序员节
supabc12312 小时前
欧盟电子发票(XRechnung/Peppol/ZUGFeRD)踩坑记:用 Python 不装 Java 跑官方校验规则
xml·python·开源·电子发票·1024程序员节
ZhengEnCi13 小时前
AI Agent工具调用防护层怎么写-一份能直接跑的Python四层拦截实现
python·llm·agent
程序员塔塔喵13 小时前
【MySQL篇|第一篇】索引失效的情况
数据库·mysql·索引失效
paopaokaka_luck13 小时前
宠物门店经营管理系统(销售与库存联动、进货自动记账、 退换与退款关联、员工个人业绩、ECharts 经营分析、滞销识别与客户分层、宠物档案年龄计算)
前端·javascript·spring boot·mysql·echarts·mybatis·1024程序员节
ZhengEnCi13 小时前
AI Agent工具误调用怎么解决-从参数校验到高危二次确认的四层工程防线
python·llm·agent