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