gpt4 book ai didi

django - 如何使用django加载自定义sql函数

转载 作者:行者123 更新时间:2023-11-29 12:27:24 27 4
gpt4 key购买 nike

我正在尝试使用 Django 的初始 SQL 数据功能来创建 SQL 函数。文档说明我可以这样做:

https://docs.djangoproject.com/en/1.6/howto/initial-data/#providing-initial-sql-data

Django provides a hook for passing the database arbitrary SQL that’s executed just after the CREATE TABLE statements when you run migrate. You can use this hook to populate default records, or you could also create SQL functions, views, triggers, etc.

经过一番谷歌搜索后,我发现 django 的 customsql 代码会拆分任何 sql 文件并逐行运行它们,从而产生此错误,

Failed to install custom SQL for myapp.somemodel model: unterminated dollar-quoted string at or near "$$ BEGIN;"

是否有可接受的解决方法?或者加载自定义 sql 函数的更好方法?

最佳答案

是的,我以前见过这个问题。如果您像这样在应用程序的 sql/ .sql 中添加多行函数:

创建或替换函数 increment(i integer) RETURNS integer AS $$
开始
返回 i + 1;
结尾;
$$ 语言 plpgsql;

你会得到你看到的错误,即类似的东西:

Failed to install custom SQL for mysite.Poll model: unterminated dollar-quoted string at or near "$$ BEGIN RETURN i + 1;" LINE 1: ... FUNCTION increment(i integer) RETURNS integer AS $$ BEGIN R...

我认为你应该能够通过将函数定义全部压缩到一行来解决这个问题,例如

创建或替换函数 increment(i integer) RETURNS integer AS $$BEGIN RETURN i + 1;结尾; $$ 语言 plpgsql;

看起来这个错误会影响任何多行函数(美元引号和单引号)。我在 Django 1.6 上测试过,不知道它是否已经修复。

关于django - 如何使用django加载自定义sql函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24988712/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com