
翻了很多例子都是使用的经典模式,实在不习惯:
import databases database = databases.Database(DATABASE_URL) metadata = sqlalchemy.MetaData() notes = sqlalchemy.Table( "notes", metadata, sqlalchemy.Column("id", sqlalchemy.Integer, primary_key=True), sqlalchemy.Column("text", sqlalchemy.String), sqlalchemy.Column("completed", sqlalchemy.Boolean), ) engine = sqlalchemy.create_engine( DATABASE_URL, connect_args={"check_same_thread": False} ) metadata.create_all(engine) await database.connect() query = notes.select() return await database.fetch_all(query) 请问怎么转成这种 ORM 模式,进行数据库操作呢?
from db.base_class import Base class User(Base): user_id = Column(String(32), primary_key=True, index=True) name = Column(String(32)) 1 westoy 2021-04-17 10:56:23 +08:00 第一段如果是官方例子的话, 配合 sqlalchemy 用只是把 sqlalchemy 当 sql 生成器松耦合用,具体执行那块都是 databases 在做, 并没有注入 sqlalchemy db 层的业务里 那么第二段应该是做不到的 |
2 Te11UA OP @westoy #1 感谢 我明白了!看了官方已经有 https://github.com/encode/orm 类似的 ORM 库了,但是有点久了…… |
3 mimzy 不用 databases,用 Tortoise,还可以 https://github.com/tortoise/tortoise-orm/ |
4 foil2 2021-04-17 14:15:48 +08:00 现在就在等 Sqlalchemy 官方支持 async |
5 mimzy 2021-04-17 14:47:10 +08:00 |
6 dongxiao 2021-04-17 23:31:17 +08:00 ``` python from sqlalchemy import select query = select(User) ``` 试试这种可行嘛 |