我在大学的DJANGO项目中使用SQLSERVER作为数据库,我需要通过DJANGO触发我的触发器和程序,我已经找了几天这样做而我不能,有谁可以帮助我?
答案 0 :(得分:0)
稍微偏离主题建议,所以请原谅我。
为什么不使用Flask。 Django的力量主要在其框架内运作。使用models.py构建数据库。您可以通过框架执行迁移,并将其用于使用自定义中间件或信号的数据操作。
如果你有一个数据库已经为你做了很多繁重的工作,那么用更少的电池工作可能会更容易。#34;像Django这样的框架并使用烧瓶或瓶子。如果它不适用于不需要企业功能或稳定性的大学项目,那将尤其如此。通过一些不太明确的框架可能更容易破解和削减。如果它在学期结束时,学习Django可能是一个很高的命令。
答案 1 :(得分:0)
我只是要回答这个问题,但是可以从经验告诉你,你可能会走向一些远离最佳做法的道路。如果这将成为一个永久性项目,你可能想要进行更多的挖掘;如果它是一个学习练习,那也很酷!
回答:Django是用Python编写的。您可以使用pyodbc
从Python触发SQL Server中的存储过程。要将SQL Server与Django的ORM一起使用,您将要使用Django引擎,例如django-pyodbc-azure
(与pip install django-pyodbc-azure
一起安装),它也将安装pyodbc
。如果您在Linux或Mac上运行Django,您还需要一个兼容SQL Server的ODBC驱动程序,例如MS ODBC驱动程序或FreeTDS(有关在Linux上安装驱动程序的最新详细信息:{ {3}})
答案 2 :(得分:0)
万一其他人最终出现在此页面上,这就是我设法做到的...我对问题的解释是如何对数据库端的数据库触发函数执行操作。我的数据库后端是PostgreSQL,但SQL是标准的,对MySQL和其他查询的查询应该大致相同。
解决方案相对简单。第一次做完
python manage.py makemigrations
python manage.py migrate
转到您选择的数据库管理器,然后查找生成希望在其上触发触发器的表的SQL查询。
例如,您的public.auth.users
表创建查询可能如下所示:
CREATE TABLE public.auth_user
(
id integer NOT NULL DEFAULT nextval('auth_user_id_seq'::regclass),
password character varying(128) COLLATE pg_catalog."default" NOT NULL,
last_login timestamp with time zone,
is_superuser boolean NOT NULL,
username character varying(150) COLLATE pg_catalog."default" NOT NULL,
first_name character varying(30) COLLATE pg_catalog."default" NOT NULL,
last_name character varying(150) COLLATE pg_catalog."default" NOT NULL,
email character varying(254) COLLATE pg_catalog."default" NOT NULL,
is_staff boolean NOT NULL,
is_active boolean NOT NULL,
date_joined timestamp with time zone NOT NULL,
CONSTRAINT auth_user_pkey PRIMARY KEY (id),
CONSTRAINT auth_user_username_key UNIQUE (username)
)
WITH (
OIDS = FALSE
)
TABLESPACE pg_default;
比方说,您希望有一个触发器来将每个新记录的last_name更改为值“ Trump”(不带引号)。创建触发器函数的代码如下所示(注意RAISE NOTICE
行仅将信息回显到SQL终端以进行调试。您可以通过在其前面添加一个双破折号来注释掉它们,例如{{1} }):
--RAISE NOTICE 'id = % ', NEW.id;
现在,您需要将函数绑定到表。为此的SQL查询是这样的:
CREATE OR REPLACE FUNCTION trumpisizer() RETURNS trigger AS $$
BEGIN
RAISE NOTICE 'last_name = % ', NEW.last_name;
NEW.last_name = 'Trump';
RAISE NOTICE 'last_name = % ', NEW.last_name;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
现在加载django应用并创建一个新用户。每个新用户的last_name将更改为新值。