MySQL和Django是搭建網站經常使用的配置之一,在此記錄一下在Windows系統搭建網站時MySQL以及Django經常使用的操做。html
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";//新建用戶
顯示全部數據庫app
SHOW databases;
建立數據庫
CREATE database xxx;
刪除數據庫
DROP database xxx;
選擇數據庫,進入tables層級
USE xxx;
顯示全部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是基於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中創建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()
//編輯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