Python 板


LINE

最近想要把csv档或是网路上的档案连结直接写进资料库,感觉终於到了最後一步 却翻遍 了google都解决不了问题 环境是pythob 3.6.1 ,anaconda 4.4.0 我在jupyter notebook下执行,使用pyodbc连接MySQL 资料来源是网址或是csv档,我比较习惯用pandas来处理资料 这是我连接资料库的方法 cn = pyodbc.connect("DRIVER={MySQL ODBC 8.0 ANSI Driver}; SERVER=localhost; PORT=3306;DATABASE=db; UID=root; PASSWORD=0000;OPTION=3;CHARSET=UTF8;") cn.setencoding(encoding='utf-8') 这行也不需要了 [解决方法]: DRIVER 需选择 Unicode 的版本,从Python连接资料库取出资料才不会变成乱码 我不太确定在.connect下放CHARSET=UTF8; 和设定.setencoding(encoding='utf-8')有什 麽不一样,但是只要少放一个,在insert into时如果有中文,jupyter notebook就会卡 住,都要shutdown kernel再重开才能继续 现在有个问题就是 我可以顺利的新增含有中文的资料到资料库了,而且在MySQL中select 出来是中文,但是到了python就会变成乱码,请问我该怎麽解决? https://imgur.com/a/1yL0qxW 还有个问题就是,我的资料里面有空值,我写了个回圈 配合 .format,让他逐行新增资 料,但是空值读出来是nan,没办法新增 如果是数字栏位的话,我可以把nan转成NULL,新增进MySQL就可以是空的,但是如果是文 字的栏位,新增的时候会变成'NULL'而不是空值了 因为我用这样的形式新增资料 for i in df1.index: cursor.execute("insert into taichung_201711 values('{}', {});" \ .format(df1.loc[i][6], df1.loc[i][7])) 如果是字串的栏位,一开始就给他''了,要是把NaN改成NULL,就会变成'NULL'进资料库 有方法可以直接把空值存进MySQL吗? 这里我还是把空值都转成 'NULL'进资料库,之後调资料出来再转回nan, 目前都用DataFrame处理资料 还没发生问题 恳请各位大大指教了 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.242.11.7
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1526060186.A.017.html
1F:→ uranusjr: 听起来你 MySQL 本身的编码就没设对 05/12 09:36
2F:→ wanget: MySQL编码是 utf8md4 应该没有问题 05/12 13:54
3F:→ wanget: https://imgur.com/a/MzAk7fU 05/12 13:54
4F:→ wanget: 还是要改成utf8呢? 05/12 13:55
5F:→ wanget: 今天发现了新问题,MySQL中只是看起来是中文,但要查询时 05/13 15:52
6F:→ wanget: 却查不出来 05/13 15:52
7F:→ wanget: 又来更新问题: MySQL可以正常查询 我之前搞错了 05/13 21:26
8F:→ uranusjr: 实在不太熟 ODBC 不确定问题在哪, 不过直觉还是觉得和资 05/13 22:10
9F:→ uranusjr: 料库设定有关, 可能要确定你的 table 真的是用 UTF-8 建 05/13 22:10
10F:→ uranusjr: 不过 utf8md4 是正确的没错, 千万不要用 utf8 05/13 22:10
11F:→ wanget: 再次附上查出来的编码和测试 https://imgur.com/a/uCChZja 05/13 23:00
12F:→ wanget: 开头都是utf8但後面不太一样,可是不管哪种 在python都是 05/13 23:02
13F:→ wanget: 乱码,我这次是在MySQL中建表 顺便设定collation 05/13 23:02
14F:→ uranusjr: 你查的是资料库的预设编码, 和表的不见得一样, 不过听你 05/14 16:25
15F:→ uranusjr: 的测试法应该是有建新表, 那麽应该是用这些没错 (希望) 05/14 16:25
16F:→ uranusjr: 这样最可能的两个问题就是 1. 进去的编码不对 2. 读出来 05/14 16:27
17F:→ uranusjr: 後印到萤幕上的结果不对; 你需要想办法用 binary 把资料 05/14 16:27
18F:→ uranusjr: 库里的值印出来, 比对它是不是真的是正确的编码结果 05/14 16:28
19F:→ wanget: https://imgur.com/a/O9Y8Cap show table status;查出来的 05/15 16:52
20F:→ wanget: 应该是表的编码吗? 从MySQL新增资料查询都没问题,到了py 05/15 16:53
21F:→ wanget: thon才有问题,问题会是出在连线吗? 我换个套件测试看看 05/15 16:54
22F:→ wanget: 进去的编码不对,和用binary把值印出来 我google还是不会 05/15 16:55
23F:→ wanget: 解决。 不过还是谢谢uranusjr大大的回覆 05/15 16:55
24F:→ wanget: 我把中文栏位拿出来.encode('utf8') 发现他是bytes的形式 05/15 20:53
25F:→ wanget: 我改用pymysql连接资料库後,可以正常的显示中文了! 我 05/16 00:01
26F:→ wanget: 想可能是pyodbc的问题 05/16 00:01
※ 编辑: wanget (111.242.1.76), 05/23/2018 16:04:24







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP