1、使用終端命令啟動(dòng)mysql
mysql -u root -p
2、在MySql中創(chuàng)建Django項(xiàng)目的數(shù)據(jù)庫
mysql>create database haha default charset=utf8;
3、在MySql中為Django項(xiàng)目,并為其授予相關(guān)權(quán)限
grant select,insert,update,delete,create,drop,index,alter,create temporary tables,lock tables on haha.* to 'liu' identified by '123456';
4、在weibsite下的setting.py中,將database默認(rèn)的sqlite改為如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'haha',
'USER':'liu',
'PASSWORD':'123456',
'HOST':'localhost',
'PORT':'3306',
}
}
5、建立一個(gè)model對(duì)象,在django中,model與數(shù)據(jù)庫表是關(guān)聯(lián)一起的,不需要我們寫sql建表,model的一個(gè)屬性即為表中的一個(gè)字段,現(xiàn)在建立一個(gè)只有一個(gè)字段的表,也就是只有一個(gè)屬性的model,在blog/models.py中添加如下代碼。blog即為自己創(chuàng)建的app的name。
from django.db import models
# Create your models here.
class Character(models.Model):
name=models.CharField(max_length=100)
def __unicode__(self):
return self.name
6、然后就可以通過命令來同步數(shù)據(jù)庫了
python manage.py syncdb
然后發(fā)現(xiàn)有錯(cuò)誤出現(xiàn),錯(cuò)誤提示代碼如下
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb
原來是沒有mysqldb,就像是java中要連接MySql數(shù)據(jù)庫要首先導(dǎo)入mysql數(shù)據(jù)庫驅(qū)動(dòng)的jar包一樣,我們必須要安裝mysqldb,也就是下面這個(gè)東西。
mysqlclient-1.3.6-cp27-none-win32.whl
選擇下載自己需要的版本。
同步數(shù)據(jù)庫之后,django將建立相關(guān)的數(shù)據(jù)庫表,同時(shí)會(huì)要求我們創(chuàng)建一個(gè)超級(jí)用戶
在mysql下 通過show tables命令發(fā)現(xiàn)django已經(jīng)為我們建立了如下表格
并沒有為我們的model建立表格,原來同步數(shù)據(jù)庫之后還需要如下兩條命令。
python manage.py makemigrations blog
python manage.py migrate
7、這時(shí)再通過mysql命令
mysql -u liu -p
use haha;
show tables;
show columns from blog_character;
最后以命令的形式返回Character類對(duì)應(yīng)的表格
除了我們自己添加的name字段,Django還為我們添加了一個(gè)自增長的id作為主鍵
insert into blog_character (name) values ('sunny');
insert into blog_character (name) values ('merigolds');
然后通過mysql命令:
select * from blog_character;
可以發(fā)現(xiàn)我們成功插入了兩條數(shù)據(jù)
8、將數(shù)據(jù)顯示到頁面上
在blog/views.py中添加如下代碼
from django.http import HttpResponse
from blog.models import Character
def staff(request):
staff_list = Character.objects.all()
staff_str = map(str,staff_list)
return HttpResponse("<p>"+' '.join(staff_str)+"</p>")
需要在website/urls.py中配置url路徑
url(r'^staff/','blog.views.staff'),
然后啟動(dòng)服務(wù)器,在瀏覽器中輸入url。就可以看到數(shù)據(jù)已經(jīng)被顯示出來了