python:sqlalchemy-快速开始

#

一、声明模型

首先我们定义了模块级结构,这些结构将形成我们将从数据库中查询的结构。这种结构称为 声明性映射,讲白了其实就是SQL表中存在的元数据。

from sqlalchemy import Column
from sqlalchemy import ForeignKey
from sqlalchemy import Integer
from sqlalchemy import String
from sqlalchemy.orm import declarative_base
from sqlalchemy.orm import relationship


Base = declarative_base()


class User(Base):
    __tablename__ = "user"
    id = Column(Integer, primary_key=True)
    name = Column(String(30))
    fullname = Column(String)
    addresses = relationship(
        "Address", back_populates="user", cascade="all, delete-orphan"
    )

    def __repr__(self):
        return f"User(id={self.id!r}, name={self.name!r}, fullname={self.fullname!r})"


class Address(Base):
    __tablename__ = "address"
    id = Column(Integer, primary_key=True)
    email_address = Column(String, nullable=False)
    user_id = Column(Integer, ForeignKey("user.id"), nullable=False)
    user = relationship("User", back_populates="addresses")

    def __repr__(self):
        return f"Address(id={self.id!r}, email_address={self.email_address!r})"

信息注释:

  • Column表示数据库表中的列。
  • primary_key设置字段为主键
  • ForeignKey设置字段为外键
  • nullable可为空,意思是可为空值
  • relationship提供两个映射类之间的关系
  • back_populates是指定和哪个类作映射关系
  • cascade级联,可理解意思就是主表数据被删除,关联的子表跟随操作

二、建立连接

from sqlalchemy import create_engine


_SQLALCHEMY_DATABASE_URL = "mysql+pymysql://root:[email protected]:3306/sqlalchemy_db"

engine = create_engine(
    # echo=True参数表示连接发出的 SQL 将被记录到标准输出
    # future=True是为了方便便我们充分利用sqlalchemy2.0样式用法
    _SQLALCHEMY_DATABASE_URL, echo=True, future=True
)

信息注释:

  • 这里就是定义一个连接数据库的变量
  • 调用creat_engine方法来连接指定的数据库

三、创建数据表

Base.metadata.create_all(engine)

信息注释:

    你可能感兴趣的:(sqlalchemy,数据库,mysql,python,sqlalchemy)