版本說明
之前一直都是用的內(nèi)置的djangodb,數(shù)據(jù)保存在本地的一個slite文件里,但是項目開發(fā)要使用mysql這樣的大型數(shù)據(jù)庫了。查了一下網(wǎng)上的教程,大多直接import Mysqldb,但是我用的是python3(django2.0以上版本已經(jīng)不支持py2了),找了一下還是有解決辦法的。
版本: python 3.6.1, django 2.0.7
下載MysqlClient擴展包
可以訪問LFD的開源網(wǎng)站,很多windows下的python擴展包都可以找到,建議mark一下。找到mysqlclient?1.3.13?cp36?cp36m?win_amd64.whl,點擊下載。
執(zhí)行cmd命令:
pip install mysqlclient?1.3.13?cp36?cp36m?win_amd64.whl
即安裝好了Mysqlclient。
創(chuàng)建一個django項目
django的環(huán)境搭建這里就不多說了,python下執(zhí)行以下命令創(chuàng)建一個django項目:
django-admin.py startproject mysqlTest
創(chuàng)建django應(yīng)用:
django-admin.py startapp blog
并將該應(yīng)用配置到項目中,修改settings.py:
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
]
修改原有數(shù)據(jù)庫連接設(shè)置以連接到目標數(shù)據(jù)庫:
# Database
# https://docs.djangoproject.com/en/2.0/ref/settings/#databases
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE': 'django.db.backends.mysql',
'NAME': 'schooldb',
'USER':'root',
'PASSWORD':'123456',
'HOST':'',
'PORT':'',
}
}
這里的schooldb是我在MySQL本地的一個數(shù)據(jù)庫,HOST和PORT不填的話默認是localhost和3306。
創(chuàng)建數(shù)據(jù)模型
這里就舉個簡單的例子,在models.py中:
from django.db import models
# Create your models here.
class User(models.Model):
UserName=models.CharField(max_length=200)
Address=models.CharField(max_length=200)
生成遷移文件,執(zhí)行遷移
執(zhí)行以下命令以同步數(shù)據(jù)庫更改:
python manage.py makemigrations
python manage.py migrate
Mysql查看數(shù)據(jù)表
這時SHOW TABLES; 后可以看到一個blog_user的表,
DESC blog_user;
表結(jié)構(gòu):
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| UserName | varchar(200) | NO | | NULL | |
| Address | varchar(200) | NO | | NULL | |
+----------+--------------+------+-----+---------+----------------+
這里我沒指定PK,也自動生成了一個自增長的id。