本人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)
但是运行程序之后发现又出现了这个错误:
是说我的语法有错误,但是这个符号我的程序中没有,所以在想是不是我使用上面那两行解决编码问题的语句造成的。
希望有大神可以解决一下,或者可以分享一下当向数据库中保存中文时遇到编码问题如何解决,非常感谢!
reload(sys) sys.setdefaultencoding('utf-8')
你可以查一下,数据库编码是有一种支持存表情的;不知道是不是这个影响的,在你的程序开始时加上上面两句代码试试
查了一下,这个是python2中进行编码转换的,python3中已经已经没有这个了。
还是很谢谢你的
你可以将sql语句打印一下再数据库可视化工具中测试一下看sql语句是否可用,或者找出问题修改,注意单引号和双引号的问题,我之前碰到这样的问题就是单双引号的问题导致的。
好的
那个符号是出现在你的报错里面的,你是注意观察你的报错信息,应该有一行的下面有这个小三角