sqlmode 学习

  1. 安装
  2. 介绍
    1. engine 和 session 的区别
  3. 多对一 一对多
    1. Relationship 中的 back_populates
  4. 多对多
    1. 中间表只有两个字段
    2. 中间表有额外的字段
  5. 文件结构

sqlmodel 是将 sqlalchemypydantic 结合起来的产物,在很多配置上与 sqlalchemy 一致,但是在使用上更加简单。并且做了非常好的autocomplete支持。

Github
文档

安装

pip install pymodel

介绍

engine 和 session 的区别

engine是全局单一的,session 是每次请求都会创建一个新的。

We would re-use the same engine in all the code, everywhere in the application (shared by all the requests). But for each request, we would create and use a new session. And once the request is done, we would close the session.

多对一 一对多

Relationship 中的 back_populates

意义是在commit之前,可以进行同步修改内容

解释

记忆技巧:

back_populates参数总是与自身Model相关

A mental trick you can use to remember is that the string in back_populates is always about the current model class you are editing. 🤓

多对多

中间表只有两个字段

多对多的要点是建立一个中间表,然后在中间表中建立两个外键。(不需要单独一列作为 primary_key)

A primary key is a way to uniquely identify a particular row in a single table. But it doesn’t have to be a single column.
A primary key can be a group of the columns in a table, which combined are unique in this table.

中间表有额外的字段

文件结构

为了防止循环引入,建议的文件结构

├── project
    ├── __init__.py
    ├── app.py
    ├── database.py
    └── models.py

models.py存放所有的SQL模型,database.py存放所有的engine


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 365433079@qq.com