django之原生SQL操作封装
公司的产品使用原生SQL,封装一个类,用于调用
# import pymysql
# 使用MySQL原生语句
from django.db import connection
import pymysql
class Exsql():
'''
配合django 内置的数据库操作函数使用
'''
def __init__(self):
pass
def get_one(self,sql):
res=None
try:
with connection.cursor() as cursor:
cursor.execute(sql)#需要先执行
res=cursor.fetchone()
except Exception as e:
res={'code':1,'error':e}
return res
def get_one_dict(self,sql):
res=None
try:
with connection.cursor() as cursor:
cursor.execute(sql)#需要先执行
desc = cursor.description
res=[
dict(zip([col[0] for col in desc], cursor.fetchone()))]
except Exception as e:
res={'code':1,'error':e}
return res
def get_all(self,sql):
res=None
try:
with connection.cursor() as cursor:
cursor.execute(sql)#需要先执行
res=cursor.fetchall()
except Exception as e:
res={'code':1,'error':e}
return res
def get_all_dict(self,sql):
res=[]
try:
with connection.cursor() as cursor:
cursor.execute(sql)#需要先执行
desc = cursor.description
res=[
dict(zip([col[0] for col in desc], row))
for row in cursor.fetchall()
]
except Exception as e:
res={'code':1,'error':e}
return res
def insert(self,sql):
return self.__edit(sql)
def update(self,sql):
return self.__edit(sql)
def delete(self,sql):
return self.__edit(sql)
def __edit(self,sql):
count=0
cursor=connection.cursor()
try:
count=cursor.execute(sql)
except Exception as e:
res={'code':1,'error':e}
cursor.rollback()
finally:
cursor.close()
return count

浙公网安备 33010602011771号