一、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是表的主键,因此间表的主键删除,插入数据后,在加上。
。。。。
再次执行,表已存在。。。直接放弃