翻了很多例子都是使用的经典模式,实在不习惯:
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 2021-04-17 11:15:50 +08:00
不用 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) ``` 试试这种可行嘛 |