关于web.py框架输出json.dumps内容到模板后的引号都被实体化为"、行业数据表和各行业对应的职业数据表数据库文件.sql下载以及libmysqlclient_r.so.16问题

一、关于web.py输出json.dumps内容到模板后的引号都被实体化为"

        web.py一个简单小巧的python开发框架:应用安装  publish:August 2, 2018 -Thursday

web.py 0.39 is the latest released version of web.py. You can install it by running:
pip install web.py
The above version only supports Python 2. If you looking for Python 3 support, try the experimental version.
pip install web.py==0.40-dev1
Or to get the latest development version from git:
git clone git://github.com/webpy/webpy.git
ln -s `pwd`/webpy/web
#安装过程
[onev@BSER-4419 test]$ sudo pip install web.py
Installing collected packages: web.py
  Running setup.py install for web.py ... done
Successfully installed web.py-0.39

        关于webpy输出json.dumps内容到模板后的引号都被实体化为" 之前在开发的时候遇到一个问题,非常棘手,就是我在python业务代码里面使用:

data['city'] = mysql.getcityArr()
data['cityjson'] = json.dumps(data['city'], ensure_ascii=False)

        然后在模板里的js代码中显示,但是输出的代码都是引号的实体字符",尝试了很多方法,也搜索了很多文档,但是依然没有解决。模板js的代码如下:

<script language='javascript'>
$(function(){
    var citys = new Array();
    var cityjson = $data['cityjson']
});
</script>

如下图:

后在网上朋友的指点下找到文档:http://webpy.readthedocs.io/en/latest/templating.html 里面有说明:

web.py automatically escapes any variables used in templates, so that if for some reason name is set to a value containing some HTML, it will get properly escaped and appear as plain text. If you want to turn this off, write $:name instead of $name.

在$和后面的变量之间增加一个分号,即模板中的cityjson改成为如下即可:

var cityjson = $:data['cityjson']

另注:和php一样,在进行json格式化的时候,可以指定不要对中文进行编码处理。如上面的代码,在json.dumps操作时增加参数ensure_ascii=false.

关于python的二维字典:python中也有二维字典的概念,但是不能简单使用二维索引来增加修改值,python二维字典数据的修改方法如下:

def moddict(dicts, fk, sk, val): 
    if fk in dicts:
        dicts[fk].update({sk: val})
    else:
        dicts.update({fk:{sk: val}})

二、行业数据表和各行业对应的职业数据表数据库文件.sql下载

        此数据为: 行业数据表和各行业对应的职业数据表数据库文件.sql 文件,可以直接导入Mysql数据库使用,包括两个文件。

        一是行业数据表.sql 文件,包括各个行业及行业介绍。

        二是全部职业数据库表,其中包括行业与职业的对应关系。均是sql文件。此数据为: 行业数据表和各行业对应的职业数据表数据库文件.sql 文件,可以直接导入Mysql数据库使用,包括两个文件。

三、python报错:ImportError: libmysqlclient_r.so.16: cannot open shared object file: No such file or directory

     今天在执行更新房产小站 http://house.04007.cn/ 数据时发现报错:ImportError: libmysqlclient_r.so.16: cannot open shared object file: No such file or directory,也都是上上次中毒导致的,上次中毒导致了几个网站的数据抓取都出现了问题,漏了好多天的数据。报错过程如下:

[root@04007 curl-7.56.1]# python /pythonroot/getHouse.py
Traceback (most recent call last):
  File "/home/pythonroot/getHouse.py", line 2, in <module>
    import MySQLdb
  File "/usr/local/python27/lib/python2.7/site-packages/MySQLdb/__init__.py", line 19, in <module>
    import _mysql
ImportError: libmysqlclient_r.so.16: cannot open shared object file: No such file or directory

    这个地方的逻辑是抓取数据要入库,需要连接mysql,出现这个问题的原因是mysqldb找不到libmysqlclient_r.so.16文件(用来链接到mysql数据库)导致问题,应该是中毒导致了这个文件的丢失吧,这些文件都只是一个软链接,原始的文件还是存在的,文件目录在/usr/local/mysql/lib/mysql/下,当然如果你的不是可以使用locate查找一下先。解决办法就是将mysql/lib下所有关于libmysqlclient的so文件在/usr/lib下建立软链接。如下过程:

[root@04007 curl-7.56.1]# locate libmysqlclient
/usr/lib64/mysql/libmysqlclient.so
/usr/lib64/mysql/libmysqlclient.so.16
/usr/lib64/mysql/libmysqlclient.so.16.0.0
/usr/lib64/mysql/libmysqlclient_r.so
/usr/lib64/mysql/libmysqlclient_r.so.16
/usr/lib64/mysql/libmysqlclient_r.so.16.0.0
/usr/local/mysql/lib/libmysqlclient.a
/usr/local/mysql/lib/libmysqlclient.so
/usr/local/mysql/lib/libmysqlclient.so.18
/usr/local/mysql/lib/libmysqlclient.so.18.0.0
/usr/local/mysql/lib/libmysqlclient_r.a
/usr/local/mysql/lib/libmysqlclient_r.so
/usr/local/mysql/lib/libmysqlclient_r.so.18
/usr/local/mysql/lib/libmysqlclient_r.so.18.0.0
[root@04007 curl-7.56.1]# sudo ln -s /usr/local/mysql/lib/mysql/libmysqlclient* /usr/lib
>>> sudo ln -s /usr/local/mysql/lib/mysql/libmysqlclient* /usr/lib
[root@04007 curl-7.56.1]# sudo ldconfig

 我的python脚本就恢复正常了。

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林戈的IT生涯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值