MySQL和Django是搭建网站常用的配置之一,在此记录一下在Windows系统搭建网站时MySQL以及Django常用的操作。

MySQL

MySQL的SQL语句不区分大小写,推荐将保留字大写,数据库名、表名、字段名等小写。

每条SQL语句必须以';'结尾,MySQL支持多行输入,直到识别到';'开始执行。

MySQL中table第一行行号为0。

系统操作

  • 启动服务

    net start mysql

    安装后MySQL只需启动一次即可

  • 登录

    在cmd中执行

    mysql -u root -p
  • 用户相关操作

    select host,user,authentication_string from mysql.user;//查询所有用户
    create user "username"@"host" identified by "password";//新建用户

databases相关操作

  • 显示所有数据库

    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

【技术博客】MySQL和Django常用操作的更多相关文章

  1. 【技术博客】Django中文件下载的实现

    开发组在开发过程中,都不可避免地遇到了一些困难或问题,但都最终想出办法克服了.我们认为这样的经验是有必要记录下来的,因此就有了[技术博客]. Django中文件下载的实现 1.背景 在VisualPy ...

  2. [技术博客]WEB实现划词右键操作

    [技术博客]WEB实现划词右键操作 一.功能解释 简单地对题目中描述的功能进行解释:在浏览器中,通过拖动鼠标选中一个词(或一段文字),右键弹出菜单,且菜单为自定义菜单,而非浏览器本身的菜单.类似的功能 ...

  3. 多IDC数据分布--MySQL多机房部署 - 学习笔记 - 51CTO技术博客

    多IDC数据分布--MySQL多机房部署 - 学习笔记 - 51CTO技术博客 多IDC数据分布--MySQL多机房部署

  4. 【技术博客】JWT的认证机制Django项目中应用

    开发组在开发过程中,都不可避免地遇到了一些困难或问题,但都最终想出办法克服了.我们认为这样的经验是有必要记录下来的,因此就有了[技术博客]. JWT的认证机制Django项目中应用 这篇技术博客基于软 ...

  5. [技术博客] Django中文件的保存与访问

    [技术博客] Django中文件的保存与访问 在TextMarking项目开发中,数据库需要保存用户上传的文本文档. 原型设计:用户点击上传文本->保存文本->文本发送到后端保存为文件. ...

  6. 【转】【技术博客】Spark性能优化指南——高级篇

    http://mp.weixin.qq.com/s?__biz=MjM5NjQ5MTI5OA==&mid=2651745207&idx=1&sn=3d70d59cede236e ...

  7. [技术博客]使用CDN加快网站访问速度

    [技术博客]使用CDN加快网站访问速度 2s : most users are willing to wait 10s : the limit for keeping the user's atten ...

  8. 【软工】[技术博客] 用Monaco Editor打造接近vscode体验的浏览器IDE

    [技术博客] 用Monaco Editor打造接近vscode体验的浏览器IDE 官方文档与重要参考资料 官方demo 官方API调用样例 Playground 官方API Doc,但其搜索框不支持模 ...

  9. 技术博客——微信小程序的架构与原理

    技术博客--微信小程序的架构与原理 在两个月的微信小程序开发过程中,我曾走了不少弯路,也曾被很多现在看来十分可笑的问题所困扰.这些弯路与困扰,基本上都是由于当时对小程序的架构理解不够充分,对小程序的原 ...

随机推荐

  1. 什么是MVC框架?

    1.什么是mvc Model View Controller,是模型-视图-控制器的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个组件里,在改进和个性化 ...

  2. 自动化测试模型 Selenium IDE Selenium Gird2

    1.线性测试 每个测试脚本相对独立,且不产生其他依赖与调用,其实就是单纯的来模拟用户完整的 操作场景.前一篇所写的测试脚本就属于线性测试. 优点:每个脚本完整且独立 缺点:测试用例的开发与维护成本高 ...

  3. prometheus学习系列十: Prometheus AlertManager配置文件说明

    alertmanager配置文件说明 alertmanager是通过命令行标记和配置文件配置的,命令行标记配置不可变的系统参数,配置文件定义抑制规则.通知路由和通知接收器.可以通过官方提供的routi ...

  4. 浅谈原子操作、volatile、CPU执行顺序

    浅谈原子操作.volatile.CPU执行顺序 在计算机发展的鸿蒙年代,程序都是顺序执行,编译器也只是简单地翻译指令,随着硬件和软件的飞速增长,原来的工具和硬件渐渐地力不从心,也逐渐涌现出各路大神在原 ...

  5. centos 6.5 忘记用户名和密码

    1,启动虚拟机,出现下面的倒计时界面时,按键盘上的e键 (说明:要确保光标此时已经在虚拟机内了,要不然,按了e键,也是在windows内,无效.e代表edit,启动前编辑) 2,进入如下后界面,再按e ...

  6. 这是一份非常适合收藏的Android进阶/面试重难点整理

    写在前面 记得我大二时“不务正业”地自学Android并跟了老师做项目,到大三开始在目前的公司实习,至今毕业已有几年多,学习Android已经6.7年多了!但总感觉知识点很零散,并且不够深入,遇到瓶颈 ...

  7. Pandas快速上手(一):基本操作

    本文包含一些 Pandas 的基本操作,旨在快速上手 Pandas 的基本操作. 读者最好有 NumPy 的基础,如果你还不熟悉 NumPy,建议您阅读NumPy基本操作快速熟悉. Pandas 数据 ...

  8. django最小程序开发流程

    1.建立工程 在工程目录下打开cmd,输入以下命令.其中mysite是项目名称. django-admin startproject mysite 命令运行完后,在该目录下会出现一个名为mysite的 ...

  9. 项目Beta冲刺(2/7)(追光的人)(2019.5.24)

    所属课程 软件工程1916 作业要求 Beta冲刺博客汇总 团队名称 追光的人 作业目标 描述Beta冲刺每日的scrum和PM报告两部分 队员学号 队员博客 221600219 小墨 https:/ ...

  10. 【Android Studio】Gradle

    Plugin version Required Gradle version 1.0.0 - 1.1.3 2.2.1 - 2.3 1.2.0 - 1.3.1 2.2.1 - 2.9 1.5.0 2.2 ...