一、关于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脚本就恢复正常了。