首页 > 数据库 >Django mysql 操作类

Django mysql 操作类

时间:2022-08-23 14:02:32浏览次数:76  
标签:get mysql request Django sql django 操作 imysql id

Django-Chain-PyMySQL


Easy to use PyMySQL in django.

对 PyMySQL 进行封装,增加链式操作,方便快捷进行 CURD 操作

注:基于 Chain-PyMySQL -> https://github.com/Tiacx/chain-pymysql/


一、安装说明(INSTALLATION)


使用 PIP 安装 或 直接下载源码

  • 全自动安装:easy_install django-chain-pymysql 或者 pip install django-chain-pymysql / pip3 install django-chain-pymysql
  • 半自动安装:先下载 https://pypi.org/project/django-chain-pymysql/#files ,解压后运行 python setup.py install
  • 手动安装:将 django-chain-pymysql 目录放置于当前目录或者 site-packages 目录
  • 通过 from django_chain_pymysql import imysql 来引用

二、连接数据库(CONNECTION)


自动读取 django 配置并连接数据库,无需手动设置

注: django 官方文档: https://docs.djangoproject.com/en/4.1/topics/db/multi-db/


三、简单示例(DEMO)


from django.http import HttpResponse
from django_chain_pymysql import imysql


def test(request):
    data = request.POST
    insert_id = imysql.table('table1').insert_one(data)

    sql = imysql.get_last_sql()

    return HttpResponse(sql + '<hr>' + str(insert_id))

from django.http import HttpResponse
from django_chain_pymysql import imysql


def test(request):
    _id = request.GET.get('id')
    effected_rows = imysql.table('table1').delete({'id': _id})

    sql = imysql.get_last_sql()

    return HttpResponse(sql + '<hr>' + str(effected_rows))

from django.http import HttpResponse
from django_chain_pymysql import imysql


def test1(request):
    _id = request.GET.get('id')
    _name = request.GET.get('name')
    effected_rows = imysql.table('table1').update({'id': _id}, {'name': _name})

    sql = imysql.get_last_sql()

    return HttpResponse(sql + '<hr>' + str(effected_rows))


def test2(request):
    data = request.POST
    _id = data.get('id')
    del data['id']
    effected_rows = imysql.table('table1').update({'id': _id}, data)

    sql = imysql.get_last_sql()

    return HttpResponse(sql + '<hr>' + str(effected_rows))

import json
from django.http import HttpResponse
from django_chain_pymysql import imysql


def test1(request):
    _id = request.GET.get('id')
    info = imysql.table('table1').where({'id': _id}).one()

    sql = imysql.get_last_sql()

    return HttpResponse(sql + '<hr>' + json.dumps(info, ensure_ascii=False))


def test2(request):
    condition = dict()
    for k, v in request.GET.items():
        if k in ['id', 'name']:
            condition[f't1.{k}'] = v
        elif k in ['age']:
            condition[f't2.{k}'] = v

    where = imysql.gen_condition(condition)
    order_by = imysql.gen_order_by(request.GET.get('order'), request.GET.get('asc') == '1')
    page = int(request.GET.get('page', 1))
    size = int(request.GET.get('size', 10))
    limit = imysql.gen_limit(skip=(page-1)*size, limit=size)
    sql = f'SELECT t1.`name`, avg(t2.age) AS age FROM table1 t1 LEFT JOIN table2 t2 ON t1.id = t2.id WHERE {where} GROUP BY t1.`name` {order_by}{limit}'
    results = imysql.execute(sql, fetch=True)

    return HttpResponse(sql + '<hr>' + json.dumps(results, ensure_ascii=False))

事务、多数据库、及其他

注:请看详细说明~


四、详细说明(DETAIL)


详细说明请参考:chain-pymysql

https://github.com/Tiacx/chain-pymysql/

标签:get,mysql,request,Django,sql,django,操作,imysql,id
From: https://www.cnblogs.com/tujia/p/16615878.html

相关文章

  • 文件操作简介与文件读写模式
    1.如何操作文件?open(文件路径,读写模式,字符编码)方式一:f=open(文件路径,读写模式,字符编码)#f=open(r‘D:\n\ts.txt’,r,encoding=‘utf8’)print(f)......
  • Flask 学习-12.Flask-SQLAlchemy链接mysql数据库
    前言SQLAlchemy采用简单的Python语言,提供高效和高性能的数据库访问,实现了完整的企业级持久模型。SQLAlchemy是目前python中最强大的ORM框架,功能全面。Flask-SQLAlche......
  • JDBC操作流程
    1.需要jar包的支持:java.sqljavax.sqlmysql-conneter-java...连接驱动(必须要导入)<dependency><groupId>mysql</groupId><artifactId>mysql-connector......
  • MySQL学习(1)---MySQL概述
    什么是数据库概述数据库(Database)是长期存储在计算机内有组织、大量、共享的数据集合。它可以供各种用户共享,具有最小冗余度和较高的数据独立性。数据库管理系统DBMS(Da......
  • MySQL 临时表的原理以及优化手段
    1临时表sortbuffer、内存临时表和joinbuffer,这三个数据结构都是用来存放语句执行过程中的中间数据,以辅助SQL语句的执行的。其中,在排序的时候用到了sortbuffer,在使用jo......
  • Liunx NFS服务和实际操作
    NFS的概念以及优缺点概述:NFS是一种基于TCP/IP传输的网络文件系统协议  优点:通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。......
  • django.core.exceptions.ImproperlyConfigured: SQLite 3.9.0 or later is required (
    一、问题运行django报错,但我并未使用这个sql服务django.core.exceptions.ImproperlyConfigured:SQLite3.9.0orlaterisrequired(found3.6.20).二、解决将sett......
  • mysql知识总结-连接查询
    Join链接方式Leftjoin左边的表为左表,rightjoin右边的表为右表1、左链接1.1、是以左表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将左表所有的查询信息......
  • 三道MySQL联合索引面试题,淘汰80%的面试者,你能答对几道
    众所周知MySQL联合索引遵循最左前缀匹配原则,在少数情况下也会不遵循(有兴趣,可以翻一下上篇文章)。创建联合索引的时候,建议优先把区分度高的字段放在第一列。至于怎么统计区......
  • 使用Photoshop对免疫荧光图片进行Merge操作方法
    如何使用Photoshop对免疫荧光图片进行Merge?这是一种科研文章中常见的修饰手法,如何使得两种荧光染色的图片merge在一起呢,为您分享使用Photoshop对免疫荧光图片进行Merge操作......