Bài này chia sẻ cách tạo kiến trúc database (shema) bằng cách dùng ORM của SQLAlchemy và cơ sở dữ liệu dùng cho loạt bài này chắc chắn là dùng MySQL - một cơ sở dữ liệu rất phổ biến, thông dụng.
1 - Cài đặt
Đầu tiên hết thì chúng ta cần cài đặt một số library dùng cho việc này. Chắc chắn là phải có cái library SQLAlchemy mà chúng ta cần thao tác rồipip install sqlalchemy
Tiếp theo là để thao tác với MySQL, chúng ta cần một library nữa, ở đây mình dùng PyMySQL
pip install pymysql
2 - Xây dựng Schema
Với ORM thì mỗi class tương ứng với một table, với SQLAlchemy cũng không ngoại lệ. Bạn theo 4 tiêu chí bên dưới để xây dựng ORM Schema trong SQLAlchemy- Kế thừa từ đối tượng declarative_base
- Thiết lập __tablename__ đặt tên cho table
- Chứa một hoặc nhiều thuộc tính là đối tượng Column
- Đảm bảo phải có Primary Key
from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class ClassName(Base): __tablename__ = "table_name" id = Column(Integer(), primary_key=True) name = Column(String(300), nullable=False)
Tạo ràng buộc quan hệ
Sử dụng phương thức relationship để thực hiện ràng buộcfrom sqlalchemy.orm import relationship class Parent(Base): __tablename__ = 'parent' id = Column(Integer, primary_key=True) children = relationship("Child", back_populates="parent") class Child(Base): __tablename__ = 'child' id = Column(Integer, primary_key=True) parent_id = Column(Integer, ForeignKey('parent.id')) parent = relationship("Parent", back_populates="children")
3 - Tạo cơ sở dữ liệu
Để có thể tạo cơ sở dữ liệu vào DBMS, trước hết chúng ta cần tạo engine tương ứng với loại CSDL mà mình chọn. Sau đó thông qua đối tượng declarative_base để thực hiện tạo cơ sở dữ liệu.from sqlalchemy import create_engine connect_string = 'mysql+pymysql://username:password@host/dbname[?options]' engine = create_engine(connect_string) Base.metadata.create_all(engine)
Demo
và cuối cùng là gọi hàm thực hiện lệnh
from orm_schemas import persist_database persist_database('root', '123456', 'test')
No comments:
Post a Comment