django 有model生成SQL以及现有反向表生成model

Posted weiokx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django 有model生成SQL以及现有反向表生成model相关的知识,希望对你有一定的参考价值。

已有models生成SQL语句

语法 python manage.py sqlall app_name   # app_name, 在settings已经导入,

如:

INSTALLED_APPS = (
‘django.contrib.admin‘,
‘django.contrib.auth‘,
‘django.contrib.contenttypes‘,
‘django.contrib.sessions‘,
‘django.contrib.messages‘,
‘django.contrib.staticfiles‘,
"apps.libs.models.weixin",
)

python manage.py sqlall weixin

wei-2:tbkw (develop)admin$ python manage.py sqlall weixin
{DB_JX_MASTER_HOST: mysql.rds.aliyuncs.com, DB_JX_PORT: 3306, DB_JX_USER: tb, DB_JX_PASSWORD: tb}
BEGIN;
CREATE TABLE `wechat_config` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `user_id` integer NOT NULL,
    `app_id` varchar(50) NOT NULL,
    `app_secret` varchar(50) NOT NULL,
    `app_token` varchar(100) NOT NULL,
    `access_token` varchar(200) NOT NULL,
    `access_token_expire_in` integer,
    `add_time` datetime(6) NOT NULL
)
;
CREATE TABLE `wechat_menu` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `wechat_id` integer NOT NULL,
    `menu_name` varchar(50) NOT NULL,
    `menu_type` varchar(20) NOT NULL,
    `menu_key` varchar(50) NOT NULL,
    `menu_value` varchar(50) NOT NULL,
    `is_button` integer NOT NULL,
    `level_id` integer NOT NULL,
    `parent_id` integer,
    `sequence` integer NOT NULL
)
;
CREATE TABLE `wechat_autoreply` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `wechat_id` integer NOT NULL,
    `replay_type` integer NOT NULL,
    `keyword` varchar(100) NOT NULL,
    `is_welcome` integer NOT NULL,
    `unmatch` integer NOT NULL,
    `text` varchar(1000) NOT NULL,
    `media` varchar(100) NOT NULL,
    `add_time` datetime(6) NOT NULL
)
;
CREATE TABLE `wechat_material` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `wechat_id` integer NOT NULL,
    `title` varchar(100) NOT NULL,
    `author` varchar(100) NOT NULL,
    `content` longtext NOT NULL,
    `source_url` varchar(100) NOT NULL,
    `cover` varchar(100) NOT NULL,
    `cover_show` integer NOT NULL,
    `summary` varchar(1000) NOT NULL,
    `add_time` datetime(6) NOT NULL
)
;
CREATE TABLE `wechat_msg_push` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `wechat_id` integer NOT NULL,
    `is_push` integer NOT NULL,
    `template_id` integer NOT NULL,
    `title` varchar(100) NOT NULL,
    `content` longtext NOT NULL,
    `add_time` datetime(6) NOT NULL
)
;

$ python manage.py makemigrations weixin

 

 

有现有表反向生成models

语法 python manage.py inspectdb

wei-2:tbkw (develop)admin$ python manage.py inspectdb
{DB_JX_MASTER_HOST: mysql.rds.aliyuncs.com, DB_JX_PORT: 3306, DB_JX_USER: ‘tb, DB_JX_PASSWORD: ‘tb}
# This is an auto-generated Django model module.
# You‘ll have to do the following manually to clean this up:
#   * Rearrange models‘ order
#   * Make sure each model has one field with primary_key=True
#   * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table
# Feel free to rename the models, but don‘t rename db_table values or field names.
#
# Also note: You‘ll have to insert the output of ‘django-admin sqlcustom [app_label]‘
# into your database.
from __future__ import unicode_literals

from django.db import models


class AuthUser(models.Model):
    username = models.CharField(unique=True, max_length=30)
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)
    email = models.CharField(max_length=75)
    password = models.CharField(max_length=128)
    is_staff = models.IntegerField()
    is_active = models.IntegerField()
    is_superuser = models.IntegerField()
    last_login = models.DateTimeField(blank=True, null=True)
    date_joined = models.DateTimeField()
    logins = models.IntegerField()
    phone = models.CharField(max_length=11, blank=True, null=True)
    qq = models.CharField(max_length=13, blank=True, null=True)

    class Meta:
        managed = False
        db_table = auth_user


class BankAccount(models.Model):
    username = models.CharField(max_length=50)
    amount = models.DecimalField(max_digits=11, decimal_places=2)
    balance = models.DecimalField(max_digits=8, decimal_places=2)
    add_date = models.IntegerField()

    class Meta:
        managed = False
        db_table = bank_account

 

.









以上是关于django 有model生成SQL以及现有反向表生成model的主要内容,如果未能解决你的问题,请参考以下文章

django 反向生成models.py

Django使用数据库表反向生成models类

从数据库反向生成django项目中的models文件

Django中反向生成models

数据库表反向生成 Django ORM inspectdb

数据库和Django model 生成和反向生成