Python与Postgresql

4 投票
7 回答
1674 浏览
提问于 2025-04-15 23:08

如果你想用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

老实说,我觉得在大多数情况下,把数据处理放在外部客户端和在这里处理差不多,没有太大区别。

撰写回答