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:123456@192.168.0.110: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)

信息注释:

    • 1
      点赞
    • 5
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值