1、django 连接oracle数据库遇到的坑

需求:通过plsql建立的oracle数据表,想要django操作这几个表

python manage.py inspectdb table_name > model.py

生成都model.py 文件报错:

‘’django” # The error was: ORA-00904: "IDENTITY_COLUMN": invalid identifier

 

解决:

# database configuration settings.py
#    'oracle': {
#        'ENGINE': 'django.db.backends.oracle',
#        'NAME': 'host:port/service',
#        'USER': 'database_user',
#        'PASSWORD': 'database_password',
#    }

pip uninstall django
pip install Django==1.11.22

cd <django application>

python manage.py inspectdb table_name > model.py

如果系统同时连接多个数据库,在创建数据库模型时需要添加database参数

python manage.py inspectdb --database xx table_name > model.py
其中 xx 是 setting文件中配置数据库的名字,DATABASE列表元素的第一层数值

 

 

pip uninstall django pip install Django==2.2.4

 

2、django服务直接放到centos中运行(不借助任何代理服务)

通过python manage.py runserver 0.0.0.0:8008 启动,在远程是无法telnet 127.0.0.1 8000 通过的

需要python manage.py runserver 0.0.0.0:8008,远程才可以telnet 127.0.0.1 8000

虽然是很小的问题,可是如果不清楚的话也会困扰一阵,所以这里说明一下

 

3、django连接mysql数据库遇到的坑

通过pymysql 驱动连接mysql时会报错:

django2.2/mysql ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3

原因同样是django版本的问题

解决:

第一种:
django降到2.1.4版本就OK了

第二种(仍使用django 2.2版本):

#找到Python环境下 django包,并进入到backends下的mysql文件夹
cd /opt/anaconda3/envs/envAGC_Mini/lib/python3.6/site-packages/django/db/backends/mysql

#文件列表如下

技术分享图片

# 找到base.py文件,注释掉 base.py 中如下部分(35/36行)
if version < (1, 3, 3):
     raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)

此时仍会会报错,报错信息如下:

AttributeError: ‘str’ object has no attribute ‘decode’

#找到operations.py文件(146行),将decode改为encode
#linux vim 查找快捷键:?decode
if query is not None:
    query = query.decode(errors=‘replace‘)
return query
#改为
if query is not None:
    query = query.encode(errors=‘replace‘)
return query

OK~ 不再报错

 

 posted on 2019-08-08 10:22  大雄fcl  阅读(881)  评论(0编辑  收藏  举报