• django 项目开发及部署遇到的坑


     

    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~ 不再报错

  • 相关阅读:
    20年的Flash要退出舞台:当年哪个小游戏你最爱?
    一些实用但不为人知的Unix命令
    20145221 《Java程序设计》第九周学习总结
    20145221 《Java程序设计》实验报告四:Android开发基础
    20145221 《Java程序设计》实验报告三:敏捷开发与XP实践
    20145221 《Java程序设计》第八周学习总结
    Java实现:数据结构之排序
    20145221 《Java程序设计》第七周学习总结
    20145221 《Java程序设计》实验报告二:Java面向对象程序设计
    网络安全攻防学习平台
  • 原文地址:https://www.cnblogs.com/fclbky/p/11319615.html
Copyright © 2020-2023  润新知