我需要对存储在PostgreSQL表中的数据进行一些统计处理。我一直在犹豫使用R还是Python。
如果使用R,我可以使用以下代码:
require("RPostgreSQL")
(...) #connection to the database, etc
my_table <- dbGetQuery(con, "SELECT * FROM some_table;")
这是非常快的:仅需5秒即可获取包含约200,000行和15列的表格,几乎没有NULL值。
使用Python,我使用以下代码:
import psycopg2
conn = psycopg2.connect(conn_string)
cursor = conn.cursor()
cursor.execute("SELECT * FROM some_table;")
my_table = cursor.fetchall()
令人惊讶的是,它会导致我的Python会话冻结并使我的计算机崩溃。
由于我将这些库用作“黑匣子”,所以我不理解为什么在R中如此快速的东西,在Python中却如此缓慢(因此几乎不可能实际使用)。
有人能解释这种性能差异吗?并且有人能告诉是否存在一种更有效的方法来获取Python中的pgSQL表格吗?
fetchone()
的行为如何? - matchdbSendQuery
和fetch
来完成这种工作的方式。 - matchfetchall()
在20行的表格中工作得很好,但fetchone()
返回以下错误:mysql.connector.errors.InternalError: Unread result found
。 - R. Bourgeon