django -----原生SQL语句查询与前端数据传递
来源:互联网 发布:sql字符串中的单引号 编辑:程序博客网 时间:2024/06/04 23:26
1.使用原生SQL语句远程链接MySQL
view.py中
---
import MySQL
def request_data(request):
if request.method == "GET": conn = MySQLdb.Connect( host ='my_ip', port = 3306, user = 'my_user', passwd = 'my_passwd', db = 'my_db', charset = 'utf8' ) cursor = conn.cursor() cursor.execute("select * from my_table limit 1")
values=cursor.fetchall()
cursor.close() conn.close() return render(request,"data.html",{'results':values})
print(values)
------------------
((1L, u'\u2320\u2131', u'13333333333333', datetime.datetime(2017, 10, 16, 0, 0)))
------------------
此时返回的values是tuple类型
2.将sql返回的value转化为dict类型
------------------------
def dictfetchall(cursor):
"将游标返回的结果保存到一个字典对象中"
desc = cursor.description
return [
dict(zip([col[0] for col in desc], row))
for row in cursor.fetchall()
]
修改一下代码
values = dictfetchall(cursor)
然后 print(values)
-----------------------------------------------------
[{'phone': u'133333333333', 'id': 1L, 'expected_date': datetime.datetime(2017, 10, 16, 0, 0), 'uname': u'\u5f20\u79d1'}]
------------------------------------------
已经变成dict类型了
在html中可以用template自带的方法引用
{% for item in results %} <li>{{item.phone}}</li> {%endfor%}
3.转化为json格式给js用
view.py中,改一行代码即可
用json.dumps()处理一下values
import json
return render(request,"data.html",{'results':json.dumps(values)})
print一下results的结果
----------------------------------------------------
[{"phone": "13333333333", "id": 1, "expected_date": "datetime.datetime(2017, 10, 16, 0, 0)", "uname": "\u5f20\u79d1"}]
--------------------------------------------------
可以看到单引号变成了双引号,python用的标识u、L消去了。
4.处理错误的datetime.datetime
import datetimeclass MySQLEncoder(json.JSONEncoder): def default(self,obj): if isinstance(obj,datetime.datetime): return obj.strftime('%Y-%m-%d %H:%M:%S') elif isinstance(obj,date): return obj.strftime('%Y-%m-%d') else: return json.JSONEncoder.default(self,obj)
定义好之后
再在刚才json.dumps()的地方改一下
return render(request,"data.html",{'results':json.dumps(values,cls=MySQLEncoder)})
print可以看到results现在已经显示正确的时间格式
[{"phone": "13333333333", "id": 1, "expected_date": "2017-10-16 00:00:00", "uname": "\u5f20\u79d1"}]
def default(self,obj):
if isinstance(obj,datetime.datetime):
return obj.strftime('%Y-%m-%d %H:%M:%S')
elif isinstance(obj,datetime.date):
return obj.strftime('%Y-%m-%d')
elif isinstance(obj, decimal.Decimal):
return str(obj)
else:
return json.JSONEncoder.default(self,obj)
def __init__(self,name):
self.val = name
return obj.val
- django -----原生SQL语句查询与前端数据传递
- 用@Query标注自定义查询语句用原生sql查询符合时间要求的数据与分页等功能
- Django查看原生SQL语句logging配置
- python django 原生sql 获取数据
- SQL语句实现跨Sql server数据库操作实例 - 查询远程SQL,本地SQL数据库与远程SQL的数据传递
- SQL 数据查询语句
- 原生SQL的查询问题,传递参数查询的问题
- django中sql语句的查询
- Hibernate的HQL查询及原生sql查询语句写法
- django执行原生sql
- Django 使用原生sql
- sql语句之查询与删除重复数据
- 常用SQL与ACCESS数据查询语句的区别
- django与jquery数据传递过程
- hinernate--推荐使用原生SQL语句进行查询(效率高)
- Hibernate中使用原生的sql语句进行查询操作
- SQL语句-数据查询-单表查询
- SQL 语句(二)--------------数据查询(简单查询)
- C语言数据结构将链串里所有值为x的字符删除
- 线程的基础学习之创建线程
- eclipse对Tomcat应用进行远程调试
- JVM规范(五)特定方法
- Power BI 疑难问题辨析
- django -----原生SQL语句查询与前端数据传递
- 消息中间件概述 mq工作原理
- lesson26 用switch语句解决问题
- JVM原理
- SQL中EXISTS的用法
- 文章标题4.3(2)
- 线程--Thread和Runnable创建线程的区别
- 模拟实现list(迭代器)
- 三值排序(计蒜客)