栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django使用Mysql数据库以及自动建表

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django使用Mysql数据库以及自动建表

Django的Mysql配置

在settings.py中如下配置:

DATAbaseS = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 用什么数据库驱动
        'NAME': '数据库的名字', 
        'USER': 'root',  # 用户名就是mysql -u后面的
        'PASSWORD': '密码是啥',  # 对应的密码
        'HOST': '127.0.0.1',  # 就是localhost
        'POST': 3306,  # mysql默认为3306,如果自己配置过mysql端口,需要改成自己配的
    }
}
建立子应用

给子服务想个名字,比如users,然后cd进项目根目录执行一些shell:

mkdir ./apps
rm -rf ./apps/<子应用名>
cd ./apps
python ../manage.py startapp <子应用名>
cd ..

并在__init__.py中:

import pymysql
pymysql.install_as_MySQLdb()  # 引入

找到子应用中的models.py,然后在里面写好自己的实体:

from django.db.models import CharField, ImageField, Model
from django.db.models.fields import (
    AutoField, BigAutoField, BigIntegerField, BooleanField,
    DateTimeField, SmallIntegerField, TextField, Field, IntegerField
)


class User(Model):
    id = BigAutoField(verbose_name='账号', primary_key=True)  # 自增长型主键
    name = CharField(max_length=20, null=False, blank=False, verbose_name='名称')
    # BooleanField在数据库中是TINYINT(1)
    deleted = BooleanField(null=False, default=False, verbose_name='已经删除')
	...


class UserInfo(Model):
	# user外键,这里可以用OneToOneField但是那将让Django自动创建一个外键,外键不是什么情况下都受欢迎的,有时候还是会用代码逻辑来代替外键
    id = BigIntegerField(verbose_name='账号', primary_key=True)  
    phone = FixedCharField( verbose_name='手机号', max_length=15, blank=False)
    ...
...
子应用注册

./<项目名>/settings.py:

INSTALLED_APPS = [
    'nebulablogs',
    'apps.<子应用名>',  # 把刚创建的子应用添加进来,别把“.apps”扔了
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

./apps/<子应用名>/apps.py:

from django.apps import AppConfig


class 什么什么Config(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'apps.<子应用名>'  # 手动加了一个“.apps”

执行以下命令:

python manage.py makemigrations <子应用名>

之后,项目目录发生改变:

  •  (项目名)
    •  manage.py 
    •  apps
      •  (子应用名)
        •  migrations多出来一个这样的目录,是数据库迁移历史文件
          •  __init__.py 
          •  0001_initial.py;
        •  admin.py 
        •  apps.py 
        •  tests.py 
        •  views.py 
        •  models.py 
        •  __init__.py 
    •  (项目名)
      •  asgi.py 
      •  settings.py 
      •  urls.py 
      •  wsgi.py 
      •  __init__.py 

然后执行下面这段:

python manage.py migrate

之后可见mysql对应数据库中出现表。注意,django不能建库,所以提前建好库

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/445789.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号