Python DBAPI 游标是否与 SQL 游标相同?如果是这样如何提高性能?替代方法应该是什么?
Is a Python DBAPI cursor the same as a SQL cursor? If so how to improve the performance? What should be the alternative approach?
我们有一个非常大的数据查询过程。
截至目前,我们正在使用原始 sql 查询获取数据,并使用 python db api 游标执行它们。
import psycopg2
conn = psycopg2.connection("DB_connection_string")
cursor = conn.cursor()
cursor.execute("select * from so_so")
这引发了性能问题的主题,我们认为这些游标与 Sql 游标相同,对性能不利。
它们一样吗?如果是这样,有人可以建议一种更快的方法吗?
SQLALCHEMY 或 ORM 模式比这种方法更快吗?
而且我还读过 SQLALCHEMY 是建立在与数据库交互形成一个层的驱动程序之上的。
不,普通的 psycopg2 游标不是 PostgreSQL server-side cursors:它们是轻量级的客户端数据结构,在客户端需要的时间内保存查询结果。
服务器端游标可以由 psycopg 使用 named cursors 而默认不使用。
我们有一个非常大的数据查询过程。 截至目前,我们正在使用原始 sql 查询获取数据,并使用 python db api 游标执行它们。
import psycopg2
conn = psycopg2.connection("DB_connection_string")
cursor = conn.cursor()
cursor.execute("select * from so_so")
这引发了性能问题的主题,我们认为这些游标与 Sql 游标相同,对性能不利。
它们一样吗?如果是这样,有人可以建议一种更快的方法吗?
SQLALCHEMY 或 ORM 模式比这种方法更快吗?
而且我还读过 SQLALCHEMY 是建立在与数据库交互形成一个层的驱动程序之上的。
不,普通的 psycopg2 游标不是 PostgreSQL server-side cursors:它们是轻量级的客户端数据结构,在客户端需要的时间内保存查询结果。
服务器端游标可以由 psycopg 使用 named cursors 而默认不使用。