首頁 >後端開發 >Python教學 >Python SQLAlchemy 終極攻略:玩關聯式資料庫的秘訣

Python SQLAlchemy 終極攻略:玩關聯式資料庫的秘訣

王林
王林轉載
2024-02-25 09:46:16375瀏覽

Python SQLAlchemy 终极攻略:玩转关系数据库的秘诀

一、邂逅 sqlAlchemy:開啟資料庫之旅

SQLAlchemy 是一個強大的python ORM(物件關係映射)工具,用於連接Python 程式碼與關係資料庫,它能夠將複雜的資料操作轉換為簡單的Python 語法,讓開發者可以更專注於業務邏輯,同時擁有對資料庫結構的完全控制。

1. 初識 SQLAlchemy:安裝與設定

# 安装 SQLAlchemy
pip install sqlalchemy

# 导入 SQLAlchemy
from sqlalchemy import create_engine, Column, Integer, String, Table

# 创建数据库引擎
engine = create_engine("sqlite:///database.db")

2. 定義模型:建立資料庫結構

# 定义模型类,代表数据库中的表
class User(object):
__tablename__ = "user"
id = Column(Integer, primary_key=True)
name = Column(String(50))
email = Column(String(50))

# 创建表
User.metadata.create_all(engine)

二、掌控資料:增刪查改

#1. 插入資料:填入資料庫

# 创建会话
session = Session(bind=engine)

# 插入数据
new_user = User(name="张三", email="zhangsan@example.com")
session.add(new_user)

# 提交事务,使数据持久化
session.commit()

# 关闭会话
session.close()

2. 查詢資料:擷取所需

# 创建会话
session = Session(bind=engine)

# 查询所有数据
users = session.query(User).all()

# 查询特定数据
user = session.query(User).filter(User.name == "张三").first()

# 关闭会话
session.close()

# 打印查询结果
print(users)
print(user)

3. 更新資料:修改現有

# 创建会话
session = Session(bind=engine)

# 更新数据
user = session.query(User).filter(User.name == "张三").first()
user.email = "zhangsan@new_example.com"

# 提交事务,使数据持久化
session.commit()

# 关闭会话
session.close()

# 打印更新后的数据
print(user)

4. 刪除資料:抹除不需要

# 创建会话
session = Session(bind=engine)

# 删除数据
user = session.query(User).filter(User.name == "张三").first()
session.delete(user)

# 提交事务,使数据持久化
session.commit()

# 关闭会话
session.close()

# 打印删除后的数据
print(session.query(User).all())

三、關係建模:勾勒出資料關聯

1. 一對多關係:建構層次結構

# 定义父模型
class Parent(object):
__tablename__ = "parent"
id = Column(Integer, primary_key=True)
name = Column(String(50))

# 定义子模型
class Child(object):
__tablename__ = "child"
id = Column(Integer, primary_key=True)
name = Column(String(50))
parent_id = Column(Integer, ForeignKey("parent.id"))

# 创建表
Parent.metadata.create_all(engine)
Child.metadata.create_all(engine)

# 创建数据
parent = Parent(name="王五")
child1 = Child(name="小红", parent_id=parent.id)
child2 = Child(name="小明", parent_id=parent.id)

# 提交事务,使数据持久化
session = Session(bind=engine)
session.add_all([parent, child1, child2])
session.commit()

# 关闭会话
session.close()

2. 多對多關係:勾連複雜關聯

# 定义模型
class Student(object):
__tablename__ = "student"
id = Column(Integer, primary_key=True)
name = Column(String(50))

class Course(object):
__tablename__ = "course"
id = Column(Integer, primary_key=True)
name = Column(String(50))

# 定义关联表
student_course = Table("student_course",
Column("student_id", Integer, ForeignKey("student.id")),
Column("course_id", Integer, ForeignKey("course.id")))

# 创建表
Student.metadata.create_all(engine)
Course.metadata.create_all(engine)
student_course.create(engine)

# 创建数据
student1 = Student(name="李四")
student2 = Student(name="赵六")
course1 = Course(name="数学")
course2 = Course(name="语文")

# 提交事务,使数据持久化
session = Session(bind=engine)
session.add_all([student1, student2, course1, course2])
session.commit()

# 建立关联
student1.courses = [course1, course2]
student2.courses = [course1]

# 提交事务,使关联持久化
session.commit()

# 关闭会话
session.close()

四、實踐之道:專案應用

1. 部落格系統:儲存文章與評論

2. 電商系統:管理商品與訂單

3. 社群平台:建構使用者關係與訊息系統

結語

SQLAlchemy 為我們開闢了一條通往關聯式資料庫的便捷之路。它不僅簡化了資料操作,還提供了靈活的關係建模能力,讓資料管理變得更輕鬆、更有效率。希望本指南能為你的 SQLAlchemy 之旅帶來啟迪,助你在數據的世界裡馳騁千里。

以上是Python SQLAlchemy 終極攻略:玩關聯式資料庫的秘訣的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:lsjlt.com。如有侵權,請聯絡admin@php.cn刪除