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