SQLAlchemy Introduce

perface

我们每天都要面对数据,数据库CRUD操作的能力对每个任务都至关重要。无论你是开发网页,桌面或其他应用,他们都需要快速且安全的接入数据。关系型数据库仍然是储存数据最主流的手段之一。

SQL是操作数据的利器,不过有时候要整合到应用里非常麻烦。作为一个Pythoner,你可能需要通过ODBC接口或者数据库API,用一些字符串生成查询。虽然这些方法可以有效的处理数据,但是数据安全和修改变得很困难。

这本书将介绍一个非常强大且具有灵活性的Python库SQLAlchemy,可以跨越关系型数据库与传统编程直接的鸿沟。SQLAlchemy允许你使用原始的SQL语言查询,更鼓励使用更高级的Pythonic展示方式和更友好的方法实现数据的查询和更新。它提供工具让你一次性把应用的类和对象映射成数据库的表,然后就可以不再理会表结构了,还可以让你不断优化模型的性能。

SQLAlchemy功能强大且充满柔性,但它还是有点复杂。SQLAlchemy教程只介绍了它的冰山一角,尽管在线文档也很全,但是更适合做参考书,不适合做教程。这本书的目的是要成为一个学习工具和一个方便的参考,帮你快速完成任务。

本书内容用的SQLAlchemy是1.0版本;但是之前的版本都可以用。0.8版可能需要一点小改动,大部分都是源自0.5版。

这本书分成三部分:SQLAlchemy Core,SQLAlchemy ORM和一个Cookbook部分。前两部分尽可能的做到一致性。我们有意在两个部分用同意的例子,目的是让你更方便的比较两种方式的用法。因此,你也可以根据自己的需要阅读本书SQLAlchemy Core和SQLAlchemy ORM的章节。

Read more…

Postgres Import CSV cp936 Error

Postgres导入CSV中文编码错误

现在公司数据资源非常丰富,动辄要处理的csv就1E8行纪录,10G,分析起来相当爽。编码格式是cp936,用官方的COPY命令导入Postgres,一直出错,目前COPY的ENCODING不支持cp936。试着用Pandas读几行,保持csv为utf-8再COPY没问题。

解决办法:通过Python3的Pandas读取CSV转换成utf-8,再利用sqlalchemy+psycopg2(目前只支持到Python3.4,还不支持3.5)导入即可。

这么多依赖推荐使用Anaconda,十分方便,尤其适合解决在Windows平台编译C语言相关库(lxml,psycopg2,numpy,pandas)时的各种奇葩问题。

具体方法如下:

Read more…