前言
不知不觉,有一段时间没有django了,刚好最近有个小项目,就顺带用用,然后发现了一些之前未接触到的内容。一是多数据连接上的支持、二是django orm对异步的支持、三是websocket相关的操作。此文仅作为有感小记。django 总的来说,确实支持的蛮多,但对于非新手,似乎会觉得有些繁琐(至少最近flask、fastapi、quart等轻量级框架用多了之后,会感觉django配置真多。不过总体上,写了一套开发模板的话,都好说。再一个判断使用标注的理由,就是项目规模了。)
数据库迁移相关
指定app、数据库生产迁移文件
默认情况下时指向default对应的数据库生成迁移文件,指定的话需要指定app,指定数据库
python manage.py makemigrations
python manage.py makemigrations resource -n remote
# 这个Name参数真的很难发现是这个参数,= =
指定app、数据库迁移
默认情况下,迁移的数据库指向为default,即使迁移文件生成时指定了不同数据库,因此需要一部分,一部分的迁移。
python .\manage.py migrate
python manage.py migrate resource --database="remote"
ORM的异步转换
ORM的异步转换需要借助sync_to_async之类的函数,这次我用的是,基于此封装的一个函数,示例如下:
from channels.db import database_sync_to_async
# 查多条数据
database_sync_to_async(list)(HoldInfo.objects.filter(
token_address=token_address
).order_by("-hold_amount"))
#查单条数据
database_sync_to_async(ERC20Token.objects.get)(address=token_address)