[笔记] 在Django之外的Python程序中使用Django ORM的代码

本シリーズのトップページhttps://qiita.com/robozushi10/items/4559a281d0319eb62c6c

请将以下内容用中文进行翻译,只需要提供一种选项:

内容

在使用 Gunicorn 的 Django 2.x 或 3.0 环境中,可以通过外部的 Python 程序使用 Django ORM 的代码,
包括记录器(logger)的内容也一同提供。

需要这段代码的原因在接近结尾处有说明。

条件

English translation: conditions

使用 Gunicorn。
settings.py 存在于以下配置中。

home
|-- foo
    |-- mysite ................... Django プロジェクト
        |-- myapp ................ Django アプリ
        |   |-- models.py
        |   略
        |-- config
            |-- settings.py
            |-- urls.py
            |-- wsgi.py
            略

代码 (daima)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# import の例. 参考なので不要なものが多々ある.
import sys; sys.dont_write_bytecode = True
import os, json, time, copy, requests, textwrap, socket, pickle, base64
from datetime import datetime
from pprint import pprint

# Django プロジェクトのパスを import 対象に加える 
sys.path.append('/home/foo/mysite')

# Gunicorn なので環境変数を明示的に指定してやる
os.environ.setdefault("DJANGO_SETTINGS_MODULE", 'config.settings')

# myapp/models.py を読み込む
from django.core.wsgi import get_wsgi_application
myapp = get_wsgi_application()
from myapp.models import *

# ロガー設定
from logging import basicConfig, getLogger, DEBUG, ERROR, INFO, WARN, CRITICAL
format = "[%(levelname)s][%(pathname)s:%(lineno)s:%(funcName)s] %(message)s"
basicConfig(level=DEBUG, format=format)
logger = getLogger('django')

if __name__ == "__main__":

  # ORM を使う. (下記はクラス Hoge に対する操作である)
  objects = Hoge.objects.all()
  logger.error(objects)

为什么需要从外部程序进行ORM操作?

由于需要通过Jenkins来实现下图所示的机制。

image.png

参考网站

广告
将在 10 秒后关闭
bannerAds