學習Python(2)Django 配置MySQL,同步數據庫

1、配置MySQLhtml

Django 的默認數據庫是sqlite3,具體怎麼樣不知道了,反正是沒用過,這裏改成MySQL,作法也很簡單,只須要修改配置文件便可python

1.項目名文件下settings.pymysql

DATABASES = {
    'default': {

        'ENGINE': 'django.db.backends.mysql',

        'NAME': 'blog_table',    #你的數據庫名稱

        'USER': 'root',   #你的數據庫用戶名

        'PASSWORD': '123456', #你的數據庫密碼

        'HOST': 'localhost', #你的數據庫主機,留空默認爲localhost

        'PORT': '3306', #你的數據庫端口
    }
}
複製代碼

更多數據庫配置參考:docs.djangoproject.com/en/2.0/ref/…sql

2.項目名文件下 __ init__.py數據庫

import pymysql
pymysql.install_as_MySQLdb()
複製代碼

2、建立modelsdjango

from django.db import models

# Create your models here.

class Article(models.Model):
    #惟一ID
    article_id = models.AutoField(primary_key=True)

    #文章標題
    title = models.TextField(max_length=100)

    #文章摘要
    brief_content = models.TextField(max_length=200)

    #文章內容
    content = models.TextField(max_length=2000)

    #文章發佈日期
    publish_date = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.title

複製代碼

經常使用model field 類型json

一、AutoField 一個自增的IntegerField,通常不直接使用,Django會自動給每張表添加一個自增的primary key。bash

二、BigIntegerField 64位整數, -9223372036854775808 到 9223372036854775807。默認的顯示widget 是 TextInput.app

三、BinaryField ( Django 1.6 版本新增 ) 存儲二進制數據。不能使用 filter 函數得到 QuerySetjsp

四、BooleanField True/False,默認的widget 是 CheckboxInput。 若是須要置空,則必須用 NullBooleanField 代替。 Django 1.6 修改:BooleanField 的默認值 由 False 改成 None,在 default 屬性未設置的狀況下。

五、CharField 存儲字符串。必須有 max_length 參數指定長度。默認的form widget 是 TextInput 若是字符串巨長,推薦使用 TextField。

六、CommaSeparatedIntegerField 一串由逗號分開的整數。必須有 max_length 參數。

七、DateField 日期,與python裏的datetime.date 實例同。有如下幾個可選的選項,均爲bool類型: DateField.auto_now: 每次執行 save 操做的時候自動記錄當前時間,常做爲最近一次修改的時間 使用。注意:老是在執行save 操做的時候執行,沒法覆蓋。 DateField.auto_now_add: 第一次建立的時候添加當前時間。常做爲 建立時間 使用。注意:每次create 都會調用。 默認的form widget 是 TextInput。 注意:設置auto_now 或者 auto_now_add 爲 True 會致使當前自動擁有 editable=False 和 blank = True 設置。

八、DateTimeField 日期+時間。與python裏的 datetime.datetime 實例同。經常使用附加選項和DateField同樣。 默認 form widget 是一個 TextInput

九、TextField 大文本,巨長的文本。默認的 form widget 是 Textarea。

3、同步數據庫

終端輸入命令

# 1. 建立更改的文件
python manage.py makemigrations
# 2. 將生成的py文件應用到數據庫
python manage.py migrate
複製代碼

咱們的表已經在數據庫生成,其它的應該是django的系統表

這裏須要注意的是django不負責數據庫編碼,因此新建數據庫時必定要指定好編碼,否則後面操做中文字符會報錯

導出數據 導入數據

python manage.py dumpdata appname > appname.json
python manage.py loaddata appname.json
複製代碼

把數據庫中的表生成對應的model

python manage.py inspectdb
複製代碼

4、建立超級管理員

python manage.py createsuperuser # 按照提示輸入用戶名和對應的密碼就行了郵箱能夠留空,用戶名和密碼必填
 
python manage.py changepassword username  # 修改 用戶密碼
複製代碼

建立完成以後,啓動項目登錄admin後臺

http://127.0.0.1:8888/admin
複製代碼

在這裏咱們也能夠查看、維護數據

5、數據查詢

如今表裏面插入兩條數據,在admin後臺添加或者在數據庫直接添加

django能夠直接渲染模板頁面,相似於jsp那種

views.py

from django.shortcuts import render
from django.http import HttpResponse
from blog.models import Article

def get_all_article(request):
    #獲取全部數據
    article_list = Article.objects.all()
    #結合一個給定的模板和一個給定的上下文字典, 並返回一個渲染後的HttpResponse對象
    return render(request, 'blog/articles.html',{
        'article_list': article_list
    })
複製代碼

記得添加應用的路由

path('get_all_article', blog.views.get_all_article),
複製代碼

編寫頁面,django 有不少本身的語法,感興趣能夠網上找一下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <table border="1">
        {% for article in article_list %}
            <tr>
                <td>{{article.title}}</td>
                <td>{{article.brief_content}}</td>
                <td>{{article.publish_date}}</td>
            </tr>
        {% endfor %}
    </table>
</body>
</html>
複製代碼

訪問測試

http://127.0.0.1:8888/blog/get_all_article
複製代碼

能夠正常取出數據,配置MySQL的大體流程就是這樣了

相關文章
相關標籤/搜索