1
Query 是 FastAPI 专门用来装饰查询参数的类
2 sqlalchemy 里面的 join
join 默认是inner join 表示将A表与B表进行内连接操作,即只返回A表和B表中有匹配关系的数据。
isouter 表示是left join
3
虚拟环境
pip3.10 install pipenv
pipenv install
pipenv shell
4
在FastAPI中,函数前面的`async`关键字表示该函数是一个异步函数。异步函数是一种特殊的函数,它可以在执行某些耗时操作时,不会阻塞其他代码的执行。相比于同步函数,异步函数能够更高效地处理并发请求。
使用`async`关键字定义的函数可以包含`await`关键字,用于等待异步操作的完成。当遇到`await`关键字时,函数会暂停执行,并将控制权交给事件循环(Event Loop),允许其他任务继续执行。一旦异步操作完成,函数会从暂停的地方继续执行。
在FastAPI中,使用异步函数可以提高应用程序的性能和响应能力,特别是在处理大量并发请求或需要与外部服务进行交互的情况下。
5
page: Annotated[int, Query(...)] = None
在 FastAPI 中,Query 方法是用于处理查询参数的一种工具
Query 是 FastAPI 提供的一个装饰器,用于声明函数参数是查询参数。
它允许我们指定参数的类型、默认值、验证规则等
设置默认值:Query(..., default=...)
添加验证规则:Query(..., min_length=..., max_length=...)
声明可选参数:Query(..., alias=..., deprecated=...)
6
json.loads()
json.loads() 是一个 Python 函数,用于将 JSON 格式的字符串解析成 Python 对象。例如,它可以将 JSON 字符串转换为 Python 字典或列表。这个函数非常有用,因为它允许程序读取和处理 JSON 数据,这是一种轻量级的数据交换格式。在 Python 中,loads 的意思是 ‘load string’,所以 json.loads() 就是从字符串中加载 JSON 数据。如果你有一个 JSON 格式的字符串,你可以使用 json.loads() 来解析它,并将其转换为 Python 可以操作的数据结构
7
断言 assert
断言(assert)语句在Python中用于检查给定的表达式是否为**True。如果表达式为False,则会引发AssertionError**。它允许您通过验证程序状态的假设来尽早捕获错误。
以下是它的工作原理:
在**assert**关键字后面编写一个表达式。
如果表达式为**True**,程序将继续正常执行。
如果表达式为**False,将引发AssertionError**,程序停止运行
8
url.scheme
URL Scheme(统一资源定位符方案)是一种标准化的协议,用于在移动应用程序之间传递数据和命令。它允许应用程序将用户重定向到其他应用程序或执行特定任务,例如发送电子邮件、拨打电话、分享内容等。
一个 URL Scheme 包含两个主要部分:
Scheme(协议):Scheme 是 URL 的初始部分,用于定义访问资源所使用的协议或方法。常见的 Scheme 包括 http、https、ftp、mailto 等。例如:
http://www.example.com:这里的 Scheme 是 http。
mailto:user@example.com:这里的 Scheme 是 mailto。
Host(主机):Host 是 URL 的主要部分,指定了资源所在的服务器或域名。例如:
http://www.example.com:这里的 Host 是 www.example.com。
总之,URL Scheme 在不同应用程序之间实现无缝集成,让我们可以通过 URL 启动其他应用程序或执行特定操作。
9
安装 vitepress 命令
npm install vitepress@1.1.3 --save-dev
10
国际化命令
生成.po
pybabel extract -F trans/babel.cfg -k lazy_gettext -o trans/en/LC_MESSAGES/messages.pot qverse_management
生成.mo
msgfmt trans/ja/LC_MESSAGES/messages.po -o trans/ja/LC_MESSAGES/messages.mo
pybabel extract:这是PyBabel工具的一个命令,用于从源文件中提取出可本地化的消息1。
-F trans/babel.cfg:这个选项指定了映射配置文件的路径。这个文件包含了如何从源代码中提取文本的规则1。
-k lazy_gettext:这个选项告诉PyBabel除了默认的关键字外,还应该查找lazy_gettext函数中的文本1。
-o trans/en/LC_MESSAGES/messages.pot:这指定了输出文件的路径。POT文件包含了所有提取出来的消息1。
qverse_management:这是最后一个参数,指定了源代码的位置,PyBabel将从这个目录开始搜索并提取文本。
总的来说,这个命令会从qverse_management目录中提取文本,根据trans/babel.cfg文件中定义的规则,查找lazy_gettext标记的文本,并将结果保存在trans/en/LC_MESSAGES/messages.pot文件中。这个POT文件随后可以用来创建不同语言的翻译文件。
11.
ContextVar 是 Python 3.7 及更高版本中引入的一个类,用于声明和使用上下文变量。这些变量对于异步编程特别有用,因为它们可以在代码的不同部分之间安全地传递数据,而不会受到其他并发代码的干扰。
简单来说,ContextVar 允许你在程序的一个部分设置一个值,然后在程序的另一个部分获取这个值,即使这两部分是在不同的异步任务中执行的。这是通过创建一个独立于线程的上下文来实现的,这样每个任务都可以有自己的变量副本。
这对于像 FastAPI 这样的异步框架特别有用,因为它允许每个请求处理过程中保持状态,而不会与其他请求混淆。例如,你可以使用 ContextVar 来存储当前用户的信息,这样无论何时访问,你都可以确保获取的是正确的用户数据,而不会因为其他并发请求而出错。
在技术层面,ContextVar 通过创建一个可以在整个请求处理过程中保持不变的变量来工作,即使在处理请求的过程中有许多异步操作发生。这使得在异步编程中管理状态变得更加容易和安全
msgfmt trans/ja/LC_MESSAGES/messages.po -o trans/ja/LC_MESSAGES/messages.mo
msgfmt mosaicms/core/i18n/en_US/LC_MESSAGES/messages.po -o mosaicms/core/i18n/en_US/LC_MESSAGES/messages.mo
12.
alembic revision --autogenerate -m 'xxx' 生成迁移文件
alembic upgrade head 执行迁移