首页 新闻 会员 周边

python 向数据库传入中文时遇到问题

0
悬赏园豆:50 [待解决问题]

本人windows平台 python3.6.5

我写了一个爬取网易云音乐评论的程序,测试过可以将评论爬取下来并保存到本地txt,但是在导入数据库时遇到了这个问题。(PS:我的数据库连接是可以用的,也可以对数据库进行操作)

导入数据库代码:

复制代码
import pypyodbc
import sys
def
saveData(self): content_list = self.get_all_comments() #这个是我爬取的评论内容,被保存在数组中,数组的每个元素是一个字典,保存了歌曲每一个评论的用户id,用户昵称,品论内容和点赞数信息。 non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd) conn = pypyodbc.connect(r'DRIVER={SQL Server Native Client 11.0};SERVER=W;DATABASE=d;UID=W;PWD=W;charset=utf8') cursor =conn.cursor() for i in content_list: #get_id = i['评论人ID'] #get_nickname = i['评论人昵称'] get_content = i['评论内容'].translate(non_bmp_map) #get_star = i['评论点赞数'] Sql_string = "insert into test_3 values('{}')".format(get_content) cursor.execute(Sql_string) conn.commit() conn.close() print("评论数据已保存在数据库!")
复制代码

刚开始遇到的是编码问题,因为网易云音乐评论中有许多表情符号,后来搜索之后发现可以使用这两行代码解决:

import sys
non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd)
get_content  = i['评论内容'].translate(non_bmp_map)

但是运行程序之后发现又出现了这个错误:

是说我的语法有错误,但是这个符号我的程序中没有,所以在想是不是我使用上面那两行解决编码问题的语句造成的。

希望有大神可以解决一下,或者可以分享一下当向数据库中保存中文时遇到编码问题如何解决,非常感谢!

我不的主页 我不 | 初学一级 | 园豆:154
提问于:2018-05-16 22:33
< >
分享
所有回答(3)
0
reload(sys)
sys.setdefaultencoding('utf-8')

 

你可以查一下,数据库编码是有一种支持存表情的;不知道是不是这个影响的,在你的程序开始时加上上面两句代码试试

DanBrown | 园豆:1321 (小虾三级) | 2018-05-17 08:10

查了一下,这个是python2中进行编码转换的,python3中已经已经没有这个了。

支持(0) 反对(0) 我不 | 园豆:154 (初学一级) | 2018-05-17 16:09

还是很谢谢你的

 

支持(0) 反对(0) 我不 | 园豆:154 (初学一级) | 2018-05-17 16:10
0

你可以将sql语句打印一下再数据库可视化工具中测试一下看sql语句是否可用,或者找出问题修改,注意单引号和双引号的问题,我之前碰到这样的问题就是单双引号的问题导致的。

自说自话唉 | 园豆:193 (初学一级) | 2018-05-25 15:29

好的

支持(0) 反对(0) 我不 | 园豆:154 (初学一级) | 2018-05-25 20:32
0

那个符号是出现在你的报错里面的,你是注意观察你的报错信息,应该有一行的下面有这个小三角

星涅爱别离 | 园豆:215 (菜鸟二级) | 2018-07-09 23:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册