xibuhaohao

 

一、Django Oracle连接配置

DATABASES = {
\'default\': {
\'ENGINE\': \'django.db.backends.oracle\',
\'NAME\': \'DEMO\',
\'USER\': \'demo1\',
\'PASSWORD\': \'demo1\',
\'HOST\': "10.XXX.XXX.XXX",  # Set to empty string for localhost
\'PORT\': \'1521\',             #端口
}
}

 

二、Django Mysql连接配置

DATABASES = {

    \'default\': {
         \'ENGINE\': \'django.db.backends.mysql\',
         #数据库名字
         \'NAME\': \'study\',
         \'USER\': \'root\',
         \'PASSWORD\': \'centos\',
         \'HOST\': \'127.0.0.1\',
         \'PORT\': \'3306\',
         \'OPTIONS\': {
            \'autocommit\': True,
            \'init_command\': "SET sql_mode=\'STRICT_TRANS_TABLES\'",
        },
    }
}

 

三、注意事项

1、查看django版本

import django
print(django.VERSION)

2、关联数据库

python manage.py makemigrations

python manage.py migrate

1)python manage.py migrate 报错

ORA-02000: missing ALWAYS keyword

ORA-02000: missing ALWAYS keyword 问题是因为django默认为每个表增加序列字段,django2.0使用了 oracle12 新特性 ALWAYS keyword(而旧版本不支持自增长序列字段),因此如果你的服务器oracle不是12c版本使用django2.0就会出现这个错误,要解决这个问题只有使用低版本的djiango或服务器升级到oracle12c,再或者花精力去修改ORM框架文件!以上是我的理解,不知正确与否,待验证!

降低版本在执行

2)python manage.py migrate 报错

修改setting中的MIDDLEWARE为MIDDLEWARE_CLASSES

3)python manage.py migrate报错

再次报错,原因是,cx_Oracle6.0以及以上版本删除numbersAsStrings方法,既然6.0删除了,只能降级

降低版本

pip install cx-oracle==5.3

报错

为了绕过这个错误,在网上找到了一个封装好的cx-Oracle版本

https://www.lfd.uci.edu/~gohlke/pythonlibs/  从这里面下载

只有这一个版本安装成功(我的是64位)

导入cx_Oracle测试

cx_Oracle5.2 ImportError: DLL load failed: 找不到指定的程序。

解决方法。。。。没有解决

回滚cx_Oracle位原来的7版本

在base.py文件中注销了 self.cursor.numbersAsStrings = True

4)python manage.py migrate 报错

因为cx_Oracle位原来的7版本对应的是Oracle12c版本,12c增加了类似MySQL的表的主键自增,

导致插入数据id为空,插入比进去,这个ID是表的主键,因此间表的主键删除,插入数据后,在加上。

。。。。

再次执行,表已存在。。。直接放弃

 

分类:

技术点:

相关文章: