django 默认使用sqlite3 数据库 数据都写入到这个数据库
我们可以不使用默认的sqlite 换成mysql
代码不用动,只要改django的setting.py 配置就可以
如图 下面配置默认是sqlite
mysql 数据库配置
注意:
'NAME' :数据库名 django不会帮你创建,要自己去mysql 上面创建数据库先
例如:设置 'NAME': db10
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'dbname', 'USER': 'root', 'PASSWORD': 'xxx', 'HOST': '', 'PORT': '', } }
HOST = ip PORT =端口 password= 密码
把这份配置 替换默认 sqlite配置
# 由于Django内部连接MySQL时使用的是MySQLdb模块,而python3中还无此模块,所以需要使用pymysql来代替
# 如下设置放置的与project同名的配置的 __init__.py文件中
import pymysql pymysql.install_as_MySQLdb()
现在我用centos准备一台mysql服务器 利用django去连上他
mysql服务器地址192.168.0.109
上面的数据库 创建一个db1数据库
mysql> create database db1 charset=utf8; Query OK, 1 row affected (0.13 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | db1 | | mysql | | performance_schema | | test | +--------------------+ 5 rows in set (0.00 sec)
django setting配置
# DATABASES = { # 'default': { # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), # } # } DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'db1', 'USER': 'root', 'PASSWORD': '123', 'HOST': '192.168.0.109', 'PORT': '3306', } }
运行django项目
启动django后 再看数据库 db1 的表发现 多了django数据表
证明连上mysql了
mysql> use db1; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +-------------------+ | Tables_in_db1 | +-------------------+ | django_migrations | +-------------------+ 1 row in set (0.01 sec)
然后我在cmdb项目 写上一个类 现在让django自动创建数据库表
models.py 配置
from django.db import models # Create your models here. # 必须继承 class UserInfo(models.Model): # django默认隐藏着会帮你创建 一列id列 自增的,设置为主键,参考mysql # 用户名列,数据类型 字符串类型,指定长度 username = models.CharField(max_length=32) password = models.CharField(max_length=64)
在项目目录执行这个命令
C:\Users\Administrator.QH-20170325TNQR\PycharmProjects\SSSSS\SS\day19\web 框架 django\s18django>python manage.py ma
kemigrations
如果出现 no changes detected 看这帖子
DjangoORM 执行 python manage.py makemigrations出现 no changes detected
这个文件记录着数据库表结构数据
0001_initial.py
执行 python manage.py makemigrations 生成001_install.py
接下来执行 python manage.py migrate
会根据刚才生成的001_install.py 生成数据库
python manage.py migrate
现在数据库已经有这个表了
C:\Users\Administrator.QH-20170325TNQR\PycharmProjects\SSSSS\SS\day19\web 框架 django\s18django>python manage.py mi
grate
Operations to perform:
Apply all migrations: admin, auth, cmdb, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial...
再看线上mysql服务器
mysql> show tables; +----------------------------+ | Tables_in_db1 | +----------------------------+ | auth_group | | auth_group_permissions | | auth_permission | | auth_user | | auth_user_groups | | auth_user_user_permissions | | cmdb_userinfo | | django_admin_log | | django_content_type | | django_migrations | | django_session | +----------------------------+ 11 rows in set (0.00 sec)
表名叫cmdb_userinfo
from django.db import models # Create your models here. # 必须继承 # 表名叫cmdb_userinfo class UserInfo(models.Model): # django默认隐藏着会帮你创建 一列id列 自增的,设置为主键,参考mysql # 用户名列,数据类型 字符串类型,指定长度 username = models.CharField(max_length=32) password = models.CharField(max_length=64)
总结:
生成一个临时文件
python manage.py makemigrations
根据临时文件生成数据库表
python manage.py migrate