【技术博客】MySQL和Django常用操作
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常用操作的更多相关文章
- 【技术博客】Django中文件下载的实现
开发组在开发过程中,都不可避免地遇到了一些困难或问题,但都最终想出办法克服了.我们认为这样的经验是有必要记录下来的,因此就有了[技术博客]. Django中文件下载的实现 1.背景 在VisualPy ...
- [技术博客]WEB实现划词右键操作
[技术博客]WEB实现划词右键操作 一.功能解释 简单地对题目中描述的功能进行解释:在浏览器中,通过拖动鼠标选中一个词(或一段文字),右键弹出菜单,且菜单为自定义菜单,而非浏览器本身的菜单.类似的功能 ...
- 多IDC数据分布--MySQL多机房部署 - 学习笔记 - 51CTO技术博客
多IDC数据分布--MySQL多机房部署 - 学习笔记 - 51CTO技术博客 多IDC数据分布--MySQL多机房部署
- 【技术博客】JWT的认证机制Django项目中应用
开发组在开发过程中,都不可避免地遇到了一些困难或问题,但都最终想出办法克服了.我们认为这样的经验是有必要记录下来的,因此就有了[技术博客]. JWT的认证机制Django项目中应用 这篇技术博客基于软 ...
- [技术博客] Django中文件的保存与访问
[技术博客] Django中文件的保存与访问 在TextMarking项目开发中,数据库需要保存用户上传的文本文档. 原型设计:用户点击上传文本->保存文本->文本发送到后端保存为文件. ...
- 【转】【技术博客】Spark性能优化指南——高级篇
http://mp.weixin.qq.com/s?__biz=MjM5NjQ5MTI5OA==&mid=2651745207&idx=1&sn=3d70d59cede236e ...
- [技术博客]使用CDN加快网站访问速度
[技术博客]使用CDN加快网站访问速度 2s : most users are willing to wait 10s : the limit for keeping the user's atten ...
- 【软工】[技术博客] 用Monaco Editor打造接近vscode体验的浏览器IDE
[技术博客] 用Monaco Editor打造接近vscode体验的浏览器IDE 官方文档与重要参考资料 官方demo 官方API调用样例 Playground 官方API Doc,但其搜索框不支持模 ...
- 技术博客——微信小程序的架构与原理
技术博客--微信小程序的架构与原理 在两个月的微信小程序开发过程中,我曾走了不少弯路,也曾被很多现在看来十分可笑的问题所困扰.这些弯路与困扰,基本上都是由于当时对小程序的架构理解不够充分,对小程序的原 ...
随机推荐
- 浏览网页隐藏服务器IP
host文件修改 notepad %windir%\system32\drivers\etc\hosts 目标IP localhost.autumn.com 可能会导致HTTP Status Code ...
- 在Node.js中使用ejsexcel输出EXCEL文件
1.背景 在Nodejs应用程序中输出Excel,第一印象想到的一般是node-xlsx,这类插件不仅需要我们通过JS写入数据,还需要通过JS进行EXCEL显示样式的管理. 这是个大问题,不仅代码冗余 ...
- FreePascal - CodeTyphon 如何调整代码编辑器背景色?
当前版本的CodeTyphon默认背景色是黑色,看起来很不习惯,通过下面操作,修改了它的代码编辑器的背景色: 1,打开CodeTyphon的菜单“工具”->“选项”. 2,选择左侧列表项目“颜色 ...
- MES被重新定义?做到这几点才算智能制造
在工业4.0背景下,推动智能制造,构建智能工厂.智能生产.智能物流和智能服务体系,我们需要对MES系统重新进行定义,主要从以下几个方面进行说明: MES深度融入企业运营环节 智能工厂中的机器将全部由软 ...
- 面试题:java内存中的堆区和数据结构中的堆有什么区别
java内存中的堆是一个 链表, 数据结构中的堆:就是一个栈
- 数据结构与算法—Trie树
Trie,又经常叫前缀树,字典树等等.它有很多变种,如后缀树,Radix Tree/Trie,PATRICIA tree,以及bitwise版本的crit-bit tree.当然很多名字的意义其实有交 ...
- Springboot+Mybatis的逆向工程
Mybatis逆向工程,自动生成 entity类和常用的增删改查方法. 1.pom.xml引入类 <!-- 通用mapper 用于mabatis封装的基础增删改查的功能--><dep ...
- Golang: 抓取网页内容
今天写个简单的程序,根据指定的 URL 来抓取相应的网页内容,然后存入本地文件.这个程序会涉及到网络请求和文件操作等知识点,下面是实现代码: // fetch.go package main impo ...
- java8中日期字符串的月日时分秒自动补零
需求:如字符串2019-7-1 9:6:5转成2019-07-01 09:06:05 java8实现如下: public static String getStartDate(String start ...
- Huffman Tree (哈夫曼树学习)
WPL 和哈夫曼树 哈夫曼树,又称最优二叉树,是一棵带权值路径长度(WPL,Weighted Path Length of Tree)最短的树,权值较大的节点离根更近. 首先介绍一下什么是 WPL,其 ...