python - 使用 Django syncdb 安装存储过程或函数

标签 python mysql sql django django-syncdb

我通常知道如何在 syncdb 上执行自定义 SQL。我正在使用已迁移的 Django 1.7,但由于某些特殊字段,我的应用程序尚未准备好,因此 Django 回退到 syncdb。至少现在它正在使用 sqlparse 以便将文件的内容正确地拆分为单个语句。

但是,安装了 sqlparse 后,Django 会立即发送整个文件,我得到

Failed to install custom SQL for myApp.myModel model: (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 'DELIMITER //\n\nDROP PROCEDURE IF EXISTS myProcedure //\n\nCREA' at line 1")

当我卸载 sqlparse 时,Django 不遵守 DELIMITER 语句,因此产生了根本没有意义的代码块。

我试过在任何带分号的行后面加上“--评论”的技巧不起作用,评论被删除了。

最佳答案

here 的评论中所述,

The delimiter is used only by mysql client (not on API, driver ... etc).
So, it won't work.

我在使用 south 使用 db.execute(sql_file) 时遇到了类似的问题(对于我的 django 迁移)我的 sql_file 所在的位置

DROP PROCEDURE IF EXIATS ....
DELIMITER //
CREATE PROCEDURE ....
BEGIN
....
END
...

我删除了 DROP 和 DELIMITER 位,并添加了 ' label ' 到程序创建,它对我有用:

CREATE PROCEDURE xxxx
label: BEGIN
  ....
;
END label

关于python - 使用 Django syncdb 安装存储过程或函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26282821/

相关文章:

python - chrome_options.binary_location() TypeError : 'str' object is not callable

php - 找不到 Laravel 4 迁移基表

PHP:如何将 CSV 文件的内容逐行导入 MySQL 数据库?

mysql - 更改 SQL 表上的 ondelete 行为

使用 goto 语句对 C++ block 进行 Python 化处理

python - 有没有办法让原子编辑器在导入时自动打开与特定 python 模块相关的文档?

python - 用 python 更改 td 类

PHP/MYSQL 显示数据库中的图像

mysql - 在不折叠 NULL 值的情况下计算 MySQL 中的不同值

sql - PostgreSQL 将对象列表插入存储过程