Python与Postgresql
如果你想用Python来处理PostgreSQL数据库中的一个表格里的数据(比如用scipy对结果进行一些分析),然后再把这些数据导出到同一个数据库里的另一个表格,你会怎么做呢?
难道唯一或者最好的方法就是先运行一个查询,把结果存到一个数组里,然后在Python中处理这个数组,最后再运行另一个SQL语句把数据输出到数据库吗?
我其实只是想问,有没有更高效的方法来处理这些数据呢?
谢谢,
伊恩
7 个回答
1
这样做的唯一或最佳方法是直接运行查询,让Python把结果存储在一个数组里,然后在Python中处理这个数组,最后再运行另一个SQL语句把结果输出到数据库吗?
这并不是唯一的方法(可以看看其他的回答),但在我看来这是最好的,也是最简单的。你只需要一个PostgreSQL的库(我使用的是 psycopg)。标准接口的文档可以在 PEP 249 找到。
下面是一个使用psycopg的 SELECT
示例:
cursor.execute("SELECT * FROM students WHERE name=%(name)s;",
globals())
还有一个 INSERT
示例:
cursor.execute("INSERT INTO Foobar (t, i) VALUES (%s, %s)",
["I like Python", 42])
1
我不太明白你说的意思,但我觉得这听起来很像
INSERT INTO anothertable SELECT stuff FROM the_table RETURNING *
然后处理返回的行数据。当然,如果你在操作这些数据的时候不想修改它的话。
3
你可以使用PL/Python来编写一个PostgreSQL的函数,用来处理数据。
http://www.postgresql.org/docs/current/static/plpython.html
老实说,我觉得在大多数情况下,把数据处理放在外部客户端和在这里处理差不多,没有太大区别。