django 使用 oracle 数据库的问题

来源:互联网 发布:淘宝创业必备知识 编辑:程序博客网 时间:2024/06/03 17:44

最近因项目需要,一定要使用oracle数据库,出现了很多坑,现在记录下来(其实oracle数据库就是那么的难用,其他框架用它也同样很多问题,不过最近django用的比较多,所以就专门下了下django下面的用法)


1.配置:

DATABASES = {    'default': {        'ENGINE': 'django.db.backends.oracle',        'NAME': '###',            #  注意这里是sid,不是服务器名字        'USER': '###',        'PASSWORD': '###',        'HOST': '127.0.0.1',        'PORT': '1521',    }}

2.models.py(这里巨坑,要自建ID,还要设置ID自增)

class TestResult(models.Model):    testresult_id = models.IntegerField(primary_key=True) # 这里要创建ID

另外,创建ID自增,用oracle的序列来实现

sql下运行:  

create sequence testresult_seq start with 1 increment by 1 NOMAXVALUE NOCYCLE CACHE 10;

create or replace trigger testresult_triggerbefore insert on testappp_testresult       for each row       begin       select testresult_seq.nextval into :new.testresult_id from dual;      end;

3.数据插入:

上面弄好后,数据可以直接插入了,不会报错

如:

TestResult.objects.create(origin_id=1000)

4.外键关联

a = TestResult.objects.filter(is_target=True)b = a[0]b.is_target = Falseb.testdomain_id = na.testdomain_id
b.save()

这里如果直接a[0] 不先给b赋值的话,程序不会报错,但不执行

第4列是关联外键的,和其他数据库是不同的,要拿你创建的ID,不是默认的ID


目前主要是上面几个问题,有更好的解决办法的话,欢迎大家指出

原创粉丝点击