背景:我有一张表,里面有大量需要遍历的条目。目前我在我的Django应用程序中执行此操作,但它占用了太多内存并且需要很长时间。
这是我正在尝试在数据库上执行的内容:
DECLARE gigantic_cursor BINARY CURSOR
FOR SELECT * FROM my_table
当我从我的Python项目打开一个连接然后调用它时,我得到一个SQL语法错误。如果我使用BEGIN..END块直接在数据库中执行,则会出现相同的错误。
Python代码看起来像:
cursor = connections['default'].cursor()
cursor.execute("DECLARE gigantic_cursor BINARY CURSOR
FOR SELECT * FROM my_table")
关于导致这种情况的任何想法?
编辑: 将声明放在存储过程中,如下所示:
mysql> DELIMITER //
mysql> CREATE PROCEDURE CreateCursor()
-> BEGIN
-> DECLARE c1 CURSOR FOR SELECT * FROM my_table;
-> END//
Python现在是
cursor = connections['default'].cursor()
cursor.execute("exec CreateCursor()")
现在抛出*** ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'exec CreateCursor()' at line 1")