在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
- migrations 多出来一个这样的目录,是数据库迁移历史文件
- (子应用名)
- (项目名)
- asgi.py
- settings.py
- urls.py
- wsgi.py
- __init__.py
然后执行下面这段:
python manage.py migrate
之后可见mysql对应数据库中出现表。注意,django不能建库,所以提前建好库。



