vue可视化报表平台后台代码
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

69 рядки
1.7 KiB

5 роки тому
import json
from django.http import JsonResponse
4 роки тому
from django.core import serializers
from django.utils import timezone
5 роки тому
from django.views.decorators.csrf import csrf_exempt
from MySQLdb import _mysql
4 роки тому
from vislib.models import SourceDataBase
5 роки тому
from common.utils.aes import pc
# Create your views here.
def default_datetime():
4 роки тому
now = timezone.now()
return now
5 роки тому
@csrf_exempt
def execSql(request):
4 роки тому
try:
body_unicode = request.body.decode('utf-8')
body = json.loads(body_unicode)
sql = body['sql']
sourceId = body['source_id']
source = SourceDataBase.objects.get(source_id=sourceId)
source = serializers.serialize('json', [source])
source = json.loads(source)[0]['fields']
host = source['host']
username = source['username']
port = source['port']
password = pc.decrypt(source['password'])
database = source['database']
5 роки тому
4 роки тому
db=_mysql.connect(
host=host,
port=int(port),
user=username,
passwd=password,
db=database,
)
db.query(sql)
data = db.store_result().fetch_row(maxrows=0, how=2)
db.close()
json_data = []
for index in range(len(data)):
row = data[index]
json_data.append({})
for key in row:
if(key.find('.')>0):
column = (key.split('.'))[1]
else:
column = key
if isinstance(row[key], bytes):
4 роки тому
print(row[key], key)
4 роки тому
json_data[index][column] = row[key].decode('UTF-8', 'ignore')
4 роки тому
else:
json_data[index][column] = row[key]
response = {
'code': 20000,
'message': 'success',
'data': json_data
}
except Exception as e:
print(e)
response = {
'code': 10000,
4 роки тому
'message': str(e),
'data': {}
4 роки тому
}
5 роки тому
return JsonResponse(response)