【问题标题】:pgadmin4 1.3 raises CSV export brokenpgadmin4 1.3 引发 CSV 导出损坏
【发布时间】:2017-09-03 07:08:38
【问题描述】:
我安装了 pgadmin4 1.3(在 docker 容器中),除 CSV 导出外,一切正常。
我在 Preferences 中正确填写了 Binary Paths,但它仍然无法正常工作。我没有错误信息。当我单击 CSV 导出图标时,没有任何反应。
这是我的配置:
- Python 版本:2.7.12
- Postgresql 版本:9.5
- Pgadmin 版本:4.1.3
- Ubuntu 16.04
如果有人遇到同样的问题,希望知道如何解决,您能帮忙吗?
谢谢!
【问题讨论】:
标签:
postgresql
pgadmin
pgadmin-4
【解决方案1】:
我终于找到了罪魁祸首!
我查看了 /var/log/apache2/errors.log 并在 CSV 创建期间看到了 UnicodeEncodeError。错误来自此文件:
/usr/local/lib/python2.7/dist-packages/pgadmin4/pgadmin/utils/driver/psycopg2/__init__.py
第 651 行,CSV 写入器在编写特殊字符(如重读字符)时损坏(我使用的是 Python 2,我想我不会遇到 Python 3 的问题):
csv_writer.writerows(results)
最终我通过使用unicodecsv 库解决了这个问题:
-
pip install unicodecsv
- 第 22 行:将
import csv 替换为 import unicodecsv as csv
- 第 647 行:将
csv.DictWriter(res_io, fieldnames=header, delimiter=str(','), quoting=csv.QUOTE_NONNUMERIC) 替换为 csv.DictWriter(res_io, encoding='utf-8', fieldnames=header, delimiter=str(','), quoting=csv.QUOTE_NONNUMERIC)
希望在此编码错误未修复时对其他人有所帮助!