【技術博客】MySQL和Django經常使用操做

MySQL和Django是搭建網站經常使用的配置之一,在此記錄一下在Windows系統搭建網站時MySQL以及Django經常使用的操做。html

MySQL

MySQL的SQL語句不區分大小寫,推薦將保留字大寫,數據庫名、表名、字段名等小寫。前端

每條SQL語句必須以';'結尾,MySQL支持多行輸入,直到識別到';'開始執行。python

MySQL中table第一行行號爲0。mysql

系統操做

  • 啓動服務sql

    net start mysql

    安裝後MySQL只需啓動一次便可數據庫

  • 登陸django

    在cmd中執行後端

    mysql -u root -p
  • 用戶相關操做服務器

    select host,user,authentication_string from mysql.user;//查詢全部用戶
    create user "username"@"host" identified by "password";//新建用戶

databases相關操做

  • 顯示全部數據庫app

    SHOW databases;
  • 建立數據庫

    CREATE database xxx;
  • 刪除數據庫

    DROP database xxx;
  • 選擇數據庫,進入tables層級

    USE xxx;

tables相關操做

  • 顯示全部table

    SHOW tables;
  • 新建table

    CREATE TABLE table_name(column1_name int NOT NULL AUTO_INCREMENT, column2_name char(50) NULL DEFAULT 1, PRIMARY KEY(column1_name))ENGINE=InnoDB;

    每一個字段能夠選擇類型、是否能夠爲空、自增、默認值、是否爲主鍵等。表格能夠選擇引擎。

  • 顯示table數據

    SELECT * FROM table_name;//顯示一個table內全部數據
    SELECT column1_name, column2_name FROM table_name;//顯示某幾列
    SELECT * FROM table_name ORDER BY column1_name, column2_name;//以某幾列爲順序展現table
    SELECT * FROM table_name ORDER BY column1_name DESC,column2_name;//以某幾列爲倒序展現table
    SELECT DISTINCT column1_name FROM table_name;//對某列去重後輸出
    SELECT * FROM table_name (ORDER BY column1_name) LIMIT a, b;//排序後展現第a+1行開始的b行
    SELECCT * FROM table_name WHERE column1_name=a AND (column2_name<=3 OR column3_name IN (3,4,5));//查找第一列爲a,第二列小於等於3或第三列爲3或4或5的詞
    SELECT column1_name FROM table_name WHERE column1_name LIKE 'xyz%';//某列中以xyz開頭詞
    SELECT column1_name FROM table_name WHERE column1_name LIKE 'xyz_';//某列中以xyz開頭+1個字符的詞
    SELECT column1_name FROM table_name WHERE column1_name REGEXP '.000';//REGEXP後加正則
  • 計算字段

    SELECT Concnt(column1_name, '(', column2_name, ')') FROM table_name ORDER BY column1_name;//拼接a(b)的形式
    SELECT Concnt(column1_name, '(', RTrim(column2_name), ')') FROM table_name ORDER BY column1_name;//刪除最右邊全部空格,LTrim()刪除最左邊全部空格
    SELECT Concnt(column1_name, '(', Upper(column2_name), ')') FROM table_name ORDER BY column1_name;//所有大寫
  • 數據彙總

    SELECT AVG(column1_name) FROM table_name AS name;//獲取一列平均值
    SELECT COUNT(*) FORM table_name;//統計行數
    SELECT AVG(column1_name) AS name1, MIN(column2_name) AS name2 FROM table_name;//最小值
  • 鏈接表

    SELECT column1_name, column2_name, column3_name FROM table1_name, table2_name WHERE table1_name.column1_name = table2_name.column1_name';
  • 更新

    INSERT INTO table_name[(column1_name, column2_name…… )] VALUES(1,2……),(3,4……);
    INSERT INTO table_name(column1_name, column2_name……) SELECT column3_name, column4_name…… FROM table2_name;//插入行
    
    ALTER TABLE table_name ADD column1_name int;//增長列
    
    ALTER TABLE table_name DROP COLUMN column1_name;//刪除列
    
    UPDATE table_name SET column1_name=word, column2_name=word WHERE column3_name=word;//更新數據
    
    DELETE FROM table_name WHRER column1_name = word;//刪除行
    
    TRUNCATE table_name;//清空
  • 索引和視圖

    CREATE [UNIQUE][CLUSTER] INDEX index_name ON talbe_name(column1_name ASC, column2_name DESC);//建立索引
    
    DROP INDEX index_name;//刪除索引
    
    CREATE VIEW view_name AS SELECT * FROM table_name WHERE what;//建立視圖
    
    DROP VIEW view_name;//刪除視圖

Django

Django是基於Python的高級Web開發框架,支持python2.7及以上。通常使用Django2.0以上。

Django採用MTV模式,即models、templetes、views,分別控制模型(即數據庫),模板(即前端),視圖(即後端邏輯)。

建立項目和應用

  • 建立項目

    django-admin startproject xxx

    項目文件:

    manage.py:項目管理器

    wsgi.py:服務器網關接口

    urls.py:URL配置文件

    settings.py:總配置文件,可更換數據庫

    __init__.py:聲明模塊

  • 建立應用

    python manage.py startapp xxx
    
    //在settings.py中的INSTALLED_APPS添加應用xxx

    應用文件:

    migrations:數據遷移模塊

    admin.py:後臺管理系統配置文件

    apps.py:當前應用配置

    models.py:數據模塊

    test.py:自動化測試模塊

    views.py:執行響應的邏輯代碼

建立響應

//編輯views.py
from django.http import HttpResponse
def xxx(request):
    return HttpResponse("xxxx")

//編輯根urls.py
from django.urls import include
//添加path('xxx/', include('xxx.urls'))

//新建應用的urls.py
from django.urls import path
from . import views
urlpatterns = [
    path('xxx/', views.xxx)
]

編輯模板

//在app下建立templates文件夾,其下建立app名文件夾

//在內層文件夾下建立xxx.html

//在views.py中建立渲染函數
def xxx(request):
    return render(request, 'xxx.html', {'key':'value'})
//其中value可在html中用{{key}}方式顯示,傳遞該字典類型的DTL到前端

鏈接MySQL

//在MySQL中創建database,推薦database名和項目名相同

//修改settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'database_name',
        'HOST': 'localhost',
        'PORT': '3306',
        'USER': 'root',
        'PASSWORD': 'xxx',
    }
}

//遷移數據,在cmd中執行
python manage.py makemigrations
python manage.py migrate

//修改項目__init__.py
import pymysql
pymysql.install_as_MySQLdb()

Django中操縱MySQL

//編輯views.py
from . import models

models.Article.objects.create(title=title) # 插入方法一

cur_ticket = models.ticket(title=title)
cur_ticket.save() # 插入方法二,此方法能夠得到自增主鍵cur_ticket.id

article = models.Article.objects.get(title='') # 查詢一個,在找不到或找到一個以上時會報錯,可用try except判斷
article = models.Article.objects.get(~Q(title=''))# 不等於
articles = models.Article.objects.filter(title='')# 查詢多個,返回一個列表,經過[]取到
articles = models.Article.objects.filter(title__in='')# 查詢結果爲多個,且查詢條件爲列表
article = models.Article.objects.get(pk='') # 根據主碼查詢
articles = models.Article.objects.all() # 查詢全部

models.Article.objects.filter(title='').update(content='a') # 更新

models.Article.objects.get(title='').delete() # 刪除
models.Article.objects.all().delete() # 刪除全部

經常使用指令

  • 啓動項目

    python manage.py runserver [xxxx]端口可選,缺省默認8000
  • 增長admin管理員

    python manage.py createsuperuser
    
    //修改settings.py中LANGUAGE_CODE='zh_Hans'
    
    //修改admin.py
    from . import models
    admin.site.register(models.Article)
    
    訪問localhost:8000/admin
  • 刪除數據庫

    migrations文件夾只留__init__.py
    
    //刪除mysql裏的database,建立空database:
    drop database xxx;
    create database xxx;
    
    //在django中從新遷移數據
    python manage.py makemigrations
    python manage.py migrate
相關文章
相關標籤/搜索