django中使用原生的sql查询实例

在app文件夹下创建database_operations.py文件,写如下内容:
import pymysql
from 项目名.settings import DATABASES


class Database_operat(object):
    def __init__(self, database=DATABASES, database_name='default'):
        database_information = database[database_name]
        try:
            self.db = pymysql.connect(host=database_information['HOST'], user=database_information['USER'], port=database_information['PORT'],
                                      password=database_information['PASSWORD'], db=database_information['NAME'])
            self.cur = self.db.cursor()
        except pymysql.err.OperationalError as e:
            print(e)
            print("连接数据库失败")
            return

    #查全部数据
    def search_all(self, sql):
        data= ''
        try:
            self.cur.execute(sql)
            self.db.commit()
            data = self.cur.fetchall()
            print(data)
            data =[i[0] for i in data]
            print(data)
            # data =list(data)
        except pymysql.err.ProgrammingError as e:
            print(e)
            print("查询失败")
        except pymysql.err.InternalError as e :
            print(e)
            print("查询失败")
        finally:
            self.db.close()
        if data:
            return data
        else:
            data = []
            return data
    def close(self):
        self.db.close()
        return



在views文件中可以这样使用:
from .database_operations import *

# 动态加载5个相似的批次号
def search_batch(request):
    db = Database_operat()
    batch = request.GET.get('batch')
    batch = batch + '%'
    batch_like_sql = "SELECT batch FROM batch_comparison WHERE batch  LIKE '%s' LIMIT 0,5;" % batch
    batch_list = db.search_all(batch_like_sql)
    msg = json.dumps(batch_list)
    return HttpResponse(msg)

 

 

posted @ 2019-11-04 14:56  xsan  阅读(1111)  评论(0编辑  收藏  举报