本文共 1440 字,大约阅读时间需要 4 分钟。
今天用python-MySQLdb模块插入中文,把收集到nginx 、IP地址做分析然后入库处理,做出图分析,插入中文的时候遇到点小问题:
最初的格式是这样的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | [root@mail python] # cat queryadd.py #!/usr/bin/env python #coding=utf-8 import json import MySQLdb def GetAddress(): pvdic = {} f = open ( '/tmp/output.txt' , 'r' ) n = 0 for line in f: add = line.split() addressname = add[ 1 ].strip( '\n' ) conn = MySQLdb.connect(host = '192.168.10.205' ,user = 'test' ,passwd = '123456' ,db = 'yizhan' ,port = 3306 ,use_unicode = 1 ,charset = "utf8" ) cursor = conn.cursor() cursor.execute( "insert into app01_map(address) values(%s)" % (addressname)) conn.commit() cursor.close() conn.close() print addressname f.close() if __name__ = = '__main__' : GetAddress() |
这个格式,插入数字和英文没有问题,但是插入中文就报错:于是下面是修改:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | [root@mail python] # cat test_mysql.py #!/usr/bin/env python #coding=utf-8 import json import MySQLdb def GetAddress(): addressname = "南宁" conn = MySQLdb.connect(host = '192.168.10.205' ,user = 'test' ,passwd = '123456' ,db = 'yizhan' ,port = 3306 ,use_unicode = 1 ,charset = "utf8" ) cursor = conn.cursor() query = "insert into app01_map(address) values(%s)" cursor.execute(query,addressname) conn.commit() cursor.close() conn.close() print addressname if __name__ = = '__main__' : GetAddress() |
插入成功:
[root@mail python]# python test_mysql.py
南宁