在django下使用mysql(1)

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)為我們建立了如下表格

Paste_Image.png

并沒有為我們的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;

Paste_Image.png

可以發(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)被顯示出來了

Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容