Django 数据库连接配置(Oracle、Mysql)

时间:2023-12-22 21:42:38

一、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)

Django 数据库连接配置(Oracle、Mysql)

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框架文件!以上是我的理解,不知正确与否,待验证!

降低版本在执行

Django 数据库连接配置(Oracle、Mysql)

2)python manage.py migrate 报错

修改setting中的MIDDLEWARE为MIDDLEWARE_CLASSES

Django 数据库连接配置(Oracle、Mysql)

3)python manage.py migrate报错

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

Django 数据库连接配置(Oracle、Mysql)

降低版本

pip install cx-oracle==5.3

报错

Django 数据库连接配置(Oracle、Mysql)

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

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

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

Django 数据库连接配置(Oracle、Mysql)

导入cx_Oracle测试

Django 数据库连接配置(Oracle、Mysql)

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

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

回滚cx_Oracle位原来的7版本

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

Django 数据库连接配置(Oracle、Mysql)

4)python manage.py migrate 报错

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

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

Django 数据库连接配置(Oracle、Mysql)

。。。。

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

Django 数据库连接配置(Oracle、Mysql)