avatar
文章
62
标签
21
分类
10

首页
标签
分类
归档
清单
  • 知识库
  • AI资源清单
AGI Explained
首页
标签
分类
归档
清单
  • 知识库
  • AI资源清单
SQLModel 关联关系(关联加载方式)
发表于2024-07-25|Python|Python•SQLModel
4. lazy加载方式参数lazy是SQLAlchemy的一个参数,定义了多表关联的数据加载方式,关联关系的加载分为三类;延迟加载、急切加载和不加载。 延迟加载是指从查询返回对象,并不加载相关对象。而当第一次在特定对象上访问给定的集合或引用时,会发出附加的 SELECT 语句,以便加载所请求的集合。 预加载是指从查询返回对象,并且相关集合或标量引用已经预先加载。 在这种场景,ORM 可以通过JOIN 来同时加载相关行,或者通过在主语句之后发出附加 SELECT 语句来立即加载集合或标量引用来实现此目的。 不加载是指禁用给定关系的加载,要么该属性为空并且从未加载,要么在访问该属性时引发错误,以防止不需要的延迟加载。 lazy参数在SQLModel中的使用案例如下: 12345678910111213141516171819class User(SQLModel, table=True): user_id: Optional[int] = Field(default=None, primary_key=True) username: str role_id: Opti ...
SQLModel 关联关系(一对一关系)
发表于2024-07-21|Python|Python•SQLModel
3. 一对一关系1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071from typing import Optionalfrom sqlmodel import Field, Relationship, Session, SQLModel, create_engineclass Card(SQLModel, table=True): id: int | None = Field(default=None, primary_key=True) card_id: str = Field(index=True) card_user: str tel: str detail: Optional["CardDetail"] = Relationship( back_populates="card", ...
SQLModel 关联关系(多对多关系)
发表于2024-07-17|Python|Python•SQLModel
2. 多对多关系1234567891011121314151617181920class HeroTeamLink(SQLModel, table=True): team_id: int | None = Field(default=None, foreign_key="team.id", primary_key=True) hero_id: int | None = Field(default=None, foreign_key="hero.id", primary_key=True)class Team(SQLModel, table=True): id: int | None = Field(default=None, primary_key=True) name: str = Field(index=True) headquarters: str heroes: list["Hero"] = Relationship(back_populates="teams", ...
SQLModel 关联关系(一对多关系)
发表于2024-07-13|Python|Python•SQLModel
1. 一对多关系12345678910111213141516class Team(SQLModel, table=True): id: int | None = Field(default=None, primary_key=True) name: str = Field(index=True) headquarters: str heroes: list["Hero"] = Relationship(back_populates="team")class Hero(SQLModel, table=True): id: int | None = Field(default=None, primary_key=True) name: str = Field(index=True) secret_name: str age: int | None = Field(default=None, index=True) team_id: int | None = Field(default=None, ...
SQLModel 使用技巧
发表于2024-07-07|Python|Python•SQLModel
1. 主键在数据库中,主键都是设置成非空的。不过在SQLModel中,主键需要设置成可空的,如: 1id: int | None = Field(default=None, primary_key=True) 这是因为这里的id 是由数据库自动生成的,而非在Python代码中。因此在创建一个实例的时候,一般都不会设置id,直到持久化到数据库中。因此,需要设置成可空字段,以免数据校验出错。 2. 连接数据库可以通过create_engine创建一个数据库连接: 1234sqlite_file_name = "database.db"sqlite_url = f"sqlite:///{sqlite_file_name}"engine = create_engine(sqlite_url, echo=True) 创建一个异步的数据库连接(需要安装aiosqlite包): 123456789from sqlalchemy.ext.asyncio import create_async_enginefrom sqlmodel.ext ...
SQLModel 入门
发表于2024-07-06|Python|Python•SQLModel
1. 简介SQLModel 建立在 SQLAlchemy 之上,提供了简化的连接管理和事务处理,同时直接支持 MySQL 数据类型和简化了外键和关系的定义,非常适合轻量级应用程序和小型项目。它可以使用 Pydantic 来定义模型,并且可以自动将这些模型映射到数据库表。这使得开发者可以轻松地进行数据库操作,而无需编写大量的 SQL 代码。 2. 安装首先,需要安装 FastAPI 和 SQLModel: 12pip install fastapi[all]pip install sqlmodel 3. 定义模型使用 SQLModel 定义模型非常简单。你只需要从 SQLModel 继承并添加字段即可。 123456from sqlmodel import SQLModel, Fieldclass User(SQLModel, table=True): id: int = Field(default=None, primary_key=True) name: str age: int 4. SQLModel的独特之处 基于Pydantic,继承了 Pydantic ...
pytest 单元测试覆盖率
发表于2024-06-23|pytest|FastAPI•pytest
pytest-cov 是一个用于测量 Python 代码测试覆盖率的 pytest 插件。它允许你在运行测试时自动收集覆盖率数据,并在测试完成后显示一个详细的报告。这对于确保你的代码库被充分测试非常有用。以下是如何使用 pytest-cov 的基本步骤: 安装首先,你需要确保已经安装了 pytest。如果尚未安装,可以通过 pip 安装它: 1pip install pytest 然后,安装 pytest-cov: 1pip install pytest-cov 使用安装后,你可以在命令行中使用 --cov 选项来运行 pytest 并收集覆盖率数据。 示例假设你的项目结构如下: 12345678your_project/ │ ├── your_module/ │ ├── __init__.py │ └── your_script.py │ └── tests/ └── test_your_script.py 在命令行中,你可以运行以下命令来收集 your_module 目录下的代码覆盖率数据: 1pytest --cov=your_module ...
pytest conftest 案例
发表于2024-06-20|pytest|FastAPI•pytest
一个FastAPI 项目 conftest.py 的案例,主要包含了配置文件定义、测试数据库的初始化、数据库session创建、HTTP客户端创建等fixture。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100@pytest_asyncio.fixture(scope="session", autouse=True)async def application(): """应用app.""" from app.main import app yield app@pytest_asyncio.fixture(scope="session", ...
pytest conftest
发表于2024-06-15|pytest|FastAPI•pytest
conftest.py 是 pytest 中的一个特殊文件,用于定义全局的配置、夹具(fixtures)、钩子函数和插件。下面将详细解析 conftest.py 文件的用法,包括使用方法、规则、建议和案例。 使用方法 创建 conftest.py 文件:在项目根目录或子目录下创建 conftest.py 文件。这个文件不需要显式导入,pytest 会自动识别并执行其中的配置。 定义夹具(fixtures):在 conftest.py 中,可以使用 @pytest.fixture 装饰器来定义全局夹具。这些夹具可以在多个测试模块中被共享和使用。 定义钩子函数:conftest.py 还可以定义全局的钩子函数,如 pytest_runtest_setup 和 pytest_runtest_teardown,这些函数分别在测试用例执行前后执行。 配置全局信息:在 conftest.py 中,可以定义一些全局的配置信息,如日志级别、报告输出路径等。 导入自定义插件:conftest.py 还可以用于导入自定义的 pytest 插件,以扩展 pytest 的功能。 规则 文件名称固定:conf ...
pytest fixture 使用
发表于2024-06-10|pytest|FastAPI•pytest
在自动化测试中,测试环境的准备与清理是确保测试稳定性和可重复性的关键步骤。pytest 框架通过其内置的 fixture 机制,为测试提供了灵活且强大的初始化与清理方案。本文将深入探讨 pytest fixture 的工作原理、使用场景、高级特性及其在实际测试中的应用。 一、Fixture 概述Fixture 是 pytest 中用于设置测试前置条件、执行测试后清理工作的功能。它可以是任何函数、类或者模块,通过特定的装饰器进行标记,以便 pytest 在测试执行过程中自动调用。Fixture 的设计哲学是“显式优于隐式”,它鼓励开发者在测试代码中明确指定测试依赖的资源和清理工作,从而提高代码的可读性和可维护性。 二、Fixture 的基本用法1. 定义 Fixture使用 @pytest.fixture 装饰器来定义一个 fixture。fixture 函数可以接收参数,并返回一个值,这个值会被测试函数作为参数接收。 123456789101112import pytest @pytest.fixture def database(): # 设置数据库连接 ...
1234…7
avatar
Eryx Lee
文章
62
标签
21
分类
10
Follow Me
最新文章
Vibe Coding2025-03-31
Xinference、Ollama 和 vLLM 比较2024-12-20
使用Xinference部署本地大模型2024-12-13
使用vLLM部署本地大模型2024-12-07
llama.cpp 编译使用2024-12-01
分类
  • FastAPI7
  • General1
  • LLM7
  • LangChain17
  • Prompt1
  • Pydantic1
  • Python21
  • pytest5
标签
SQLModel Vibe Coding ollama LLM Ollama pytest LangChain mkdocs Docker vLLM tools FastAPI Cache Xinference ruff Pydantic Python Celery llama.cpp RAG Prompt
归档
  • 三月 20251
  • 十二月 20244
  • 十一月 20246
  • 十月 20241
  • 九月 20241
  • 八月 20246
  • 七月 20247
  • 六月 20245
网站资讯
文章数目 :
62
本站访客数 :
本站总访问量 :
最后更新时间 :
©2023 - 2025 By Eryx Lee
框架 Hexo|主题 Butterfly
浙ICP备2024062350号-1