zoukankan      html  css  js  c++  java
  • 【技术博客】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
      
  • 相关阅读:
    绑定对象
    类与对象
    视音频技术干货专栏
    sqlite3把字段为int32(用c++的time(nullptr)获取的)的秒数显示为年月日时分秒
    微信小程序开发 --- 小白之路 --- 心得
    spring cloud --- config 配置中心 [本地、git获取配置文件]
    spring cloud --- Zuul --- 心得
    spring boot --- 注解 @Bean 和@Component
    spring cloud --- Feign --- 心得
    spring cloud --- Ribbon 客户端负载均衡 + RestTemplate + Hystrix 熔断器 [服务保护] ---心得
  • 原文地址:https://www.cnblogs.com/stupidRJGC/p/10843910.html
Copyright © 2011-2022 走看看