Django ORM独立使用探索

感觉Django ORM不错,如果能独立出来,方便使用于其它的应用(甚至非Web应用),无疑对开发带来很大的便宜。

分析Django项目的结构

DjangoProjectName(Folder)

  manage.py

  DjangoProjectName(Folder)

    __init__.py

    settings.py

  AppName(Folder)

    models.py

    migrations(Folder)

      __init__.py

在DjangoProjectName.settings.py中保留以下设置:

SECRET_KEY 
INSTALLED_APPS(只留下AppName,其它的删除)
DATABASES
EFAULT_AUTO_FIELD


在models中添加类

运行python manage.py makemigrations

  python manage.py migrate

能够成功在数据库中建立表

 

在数据库中建立数据表,然后运行python manage.py  inspectdb>models.py

也能成功从数据库中的表生成models类

 

新建一个python文件,来测试使用ORM类,结果出现错误,程序会models的base类中检测app是否装载(python manage.py runserver),注释掉后直接赋值app_label变量,仍有其它错误,什么基它的设置,比如database,template相关的,难道要使用models类真难吗?

 

后发现运行python manage.py shell

在这样的交互环境里,可以正常使用ORM类!!!

shell继承于basecommand,在shell中有一句:

requires_system_checks = False

在从此出发.....

 settings 中的

BASE_DIR项要保留

在运行的py文件中引入:

import django
import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DjangoORM.settings")
django.setup()

import orm_app.models

OK,搞定!

对于项目下的manage.py文件,可以用下面的方式替代

from django.apps import apps
from django.conf import settings
from django.core.management import call_command

apps.populate(settings.INSTALLED_APPS)
print("----------apps.populate----------")

def migrate(app_name: str):
  call_command("migrate", app_name)

def make_migrations(app_name: str):
  call_command("makemigrations", app_name)

 

posted @   吾心依旧  阅读(271)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示