标签: sqlmodel

无法通过 SQLModel 将 FastAPI List[]、Set() 映射到 Postgres

我正在使用FastAPI制作我的个人投资组合 API ,并决定尝试SQLModel。它感觉非常直观,到目前为止我很喜欢它,但我遇到了一个问题,我已经挣扎了好几天,试图了解如何解决它。

\n

我有一个项目模型:

\n
from datetime import datetime\nfrom typing import List, Optional, Set\nfrom sqlmodel import SQLModel, Field\n\n\nclass ProjectBase(SQLModel):\n    name: Optional[str]\n    summary: Optional[str]\n    description: Optional[str]\n    category: Set[str] = ()\n    award: Optional[str] = None\n    url: Optional[str] = None\n    published: datetime = datetime.utcnow()\n    image: str = "placeholderMainImage"\n    images: List[str] = []\n    learning: Optional[str]\n    tech: Optional[str]\n    tools: Optional[str]\n\n\n\nclass Project(ProjectBase, table=True):\n    id: int = Field(default=None, primary_key=True)\n    created_at: datetime = Field(default_factory=datetime.utcnow)\n    updated_at: datetime = Field(default_factory=datetime.utcnow)\n
Run Code Online (Sandbox Code Playgroud)\n

FastAPI 工作正常,我检查了 localhost:8000/docs并正确进行了类型验证: …

sqlalchemy pydantic fastapi sqlmodel

3
推荐指数
1
解决办法
2585
查看次数

Python SQLModel - 截断表或删除全部并获取行数

使用 Python SQLModel,我想以最 SQLModel 标准的方式截断表,或删除所有行,并获取已删除行的数量。我怎样才能做到这一点?我正在使用这个:

        with Session(engine) as session:
            count = session.exec(delete(MyModel)).fetchall()
            session.commit()
Run Code Online (Sandbox Code Playgroud)

但它会引发一个错误:

ResourceClosedError('This result object does not return rows. It has been closed automatically.')
Run Code Online (Sandbox Code Playgroud)

我也尝试过scalar(),而fetchone()不是fetchall()没有成功。

python sqlalchemy sqlmodel

3
推荐指数
1
解决办法
3152
查看次数

sqlmodel:按 null 过滤

请参阅此处的过滤示例:https://sqlmodel.tiangolo.com/tutorial/where/#filter-rows-using-where-with-sqlmodel,如何获取所有年龄为空的英雄。

我需要相当于:

select * from hero where age is null
Run Code Online (Sandbox Code Playgroud)

这有效:

select(Hero).where(Hero.age != None)
Run Code Online (Sandbox Code Playgroud)

但是,IDE 抱怨PEP 8: E711 comparison to None should be 'if cond is not None:'

所以我把它改为:

select(Hero).where(Hero.age is None)
Run Code Online (Sandbox Code Playgroud)

但是,它无法按预期工作,导致生成不正确的 SQL:

SELECT * FROM hero WHERE 0 = 1
Run Code Online (Sandbox Code Playgroud)

什么是正确的做法?

python null filter sqlmodel

2
推荐指数
1
解决办法
1408
查看次数

在 SQLModel 中使用 PostGIS 几何类型

是否可以在 SQLModel 创建的模型中使用 PostGIS 几何类型?如果是的话,该怎么办?

python postgis geoalchemy2 sqlmodel

1
推荐指数
1
解决办法
722
查看次数

标签 统计

sqlmodel ×4

python ×3

sqlalchemy ×2

fastapi ×1

filter ×1

geoalchemy2 ×1

null ×1

postgis ×1

pydantic ×1