sqlmodel
是将 sqlalchemy
和 pydantic
结合起来的产物,在很多配置上与 sqlalchemy
一致,但是在使用上更加简单。并且做了非常好的autocomplete支持。
安装
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