zoukankan      html  css  js  c++  java
  • 安装Django时解决的问题-mysql及访问(附pycharm激活)

    1.做些软链接和virtualenv的基本使用:

    ln -s /data/linkdood/im/vrv/python36/bin/python3.6 /usr/bin/python3
    ln -s /data/linkdood/im/vrv/python36/bin/pip3.6 /usr/bin/pip
    ln -s /data/linkdood/im/vrv/python36/bin/virtualenv /usr/bin/virtualenv
    virtualenv /data/my_env1 -p /usr/bin/python3  创建
    source /data/my_env1/bin/activate  激活
    deactivate 熄火
    rmvirtualenv project_env 删除
    pip freeze
    pip install Django
    import django
    django.VERSION
    

    django-admin startproject monitor1 创建一个项目

    python manage.py startapp show 创建一个app

    2.初始化数据库

    python manage.py migrate

    一、报错:django.db.utils.NotSupportedError: URIs not supported

    版本问题,sqlite3.7.5竟然没有URLs文件,sqlite3 -version

    我的版本是3.6.20,更低,直接舍弃,转用MySQL(Linux环境)

    DATABASES = {
    	'default': {
    		'ENGINE': 'django.db.backends.mysql',
    		'NAME': 'information',
    		'USER': '用户',
    		'PASSWORD': '加过密的密码',
    		'HOST': '127.0.0.1',
    		'PORT': '11306',
    	}
    }
    

    二、再执行,报错:

    django.core.exceptions.ImproperlyConfigured:

    Error loading MySQLdb module.Did you install mysqlclient?

    你认为这是让你去安装mysqlclient么?

    这是让你去装python连接mysql数据库的驱动程序,首先,需要安装mysql的开发包

    rpm -qa | grep mysql-devel
    yum install mysql-devel
    #python2.7:
    sudo pip install MySQLdb
    #python3.4:
    sudo pip install PyMySQL
    安装完成之后还是报这个错,
    在Django中,连接数据库时使用的是 MySQLdb 库,这在与 python3 的合作中就会报刚才的错
    解决办法:在 __init__.py 文件中添加以下代码即可
    import pymysql
    pymysql.install_as_MySQLdb()
    

    三、报这个错:ModuleNotFoundError: No module named 'pymysql'

    是因为我的真实环境安装了PyMySQL,虚拟目录没有安装。

    四、报这个错;"Access denied for user 'django'@'localhost' (using password: YES)"

    是因为授权有问题,应该这样授权(不是127.0.0.1):

    grant all on information.* to django@localhost identified by 'qwerQWER1234!@#$';

    五、执行,报错:django.db.utils.InternalError: (1366, "Incorrect string value:

    '\xE4\xBC\x81\xE4\xB8\x9A...' for column 'name' at row 1"),

    是因为字符集的原因,数据库默认是latin1,

    查看数据库字符集:show variables like 'character%';

    查看某个库的表的字符集:show table status from information;

    首先修改字符集-vi /etc/my.cnf 添加 character_set_server=utf8,重启数据库,发现不行;

    这是因为之前创建的这个information字符集是latin1,需要删除它重新建一个,重复之前的步骤即可解决.

    六、执行,报错: django.db.utils.InternalError: (1049, "Unknown database 'information'")

    这是因为数据库中没有这个表

    create database information;
    show grants;
    查看当前用户拥有的权限,按理说这个django项目应该只拥有这一个表的权限:
    grant all on information.* to django@localhost identified by 'django';
    

    七、数据库常用操作:

    alter user 'root'@'localhost' identified by 'Root123!@#'; 重置centos7-mysql5.7.24重置密码
    CREATE USER 'django' IDENTIFIED BY 'qwerQWER1234!@#$';  创建用户,其实不用创建,授权的时候直接就创建了
    delete from user where user='django';  删除用户
    

    drop database information;

    create database information; 下面这句仅当参考

    CREATE DATABASE IF NOT EXISTS db default character set utf8 COLLATE utf8_general_ci;

    delete from show_company where id=1;

    update show_company set domaim_name='t2.linkdood.cn',ipaddress='1.1.1.2' where id=2;

    insert into show_company (domaim_name,ipaddress,use_type,register_date) values ('*','*','*','*');

    手动插入数据每个字段都要写,你django里有默认的都不行

    在models中设置了install_date不能为空,用install.objects.create不加这个字段还是能创建,

    install.objects.filter(id=1).delete()

    install.objects.filter(id=1).update(result_type='failure')

    联合唯一测试成功-unique_together = ('user', 'install_date')

     3.解决无法访问的问题:

    nohup python manage.py runserver 172.16.8.128:10000 &
    启动后由于防火墙阻挡,添加策略:
    iptables -I INPUT 3 -p tcp -m multiport --dports 10000,10001,10002 -m state --state NEW,ESTABLISHED -j ACCEPT
    iptables -I OUTPUT 3 -p tcp -m multiport --dports 10000,10001,10002 -m state --state NEW,ESTABLISHED -j ACCEPT
    用-A添加到末尾还不行,因为第六条策略将匹配不到的全部拒绝,所以得用-I插队到第三条
    访问时,因为没有用127.0.0.1,所以报错:
    Invalid HTTP_HOST header:You may need to add '202.201.38.70' to ALLOWED_HOSTS.
    可以用下面的两种方式任意一个:
    ALLOWED_HOSTS = ['172.16.8.128', 'localhost', '127.0.0.1']
    ALLOWED_HOSTS = ['172.16.8.128']
    

    报错:Error: That IP address can't be assigned to.

    是因为:我用这样的方式启动-python manage.py runserver 192.168.165.4:8000

    windows本机IP是192.168.165.4,但我的虚拟机用的是NAT模式,虚拟机IP是192.168.150.10,

    django不识别windows本机IP,你用127.0.0.1启动不会报错,但是windows访问不了,正确启动方式:

    python manage.py runserver 192.168.150.10:8000 用虚拟机IP启动

     4.时间问题:

    auto_now无论是你添加还是修改对象,时间为你添加或者修改的时间,

    auto_now_add为添加时的时间,更新对象时不会有变动。

    from show.models import company

    a=company.objects.create(name="中国建设银行003",identify="003")

    数据库里的时间差8个小时,需要注释一行,修改一行,添加一行:

    # TIME_ZONE = 'UTC'
    TIME_ZONE = 'Asia/Shanghai'
    将True改为False
    USE_TZ = False
    

     将数据库中的时间格式化为常见格式:用python的方式这么实现:

    a.date.strftime( '%Y-%m-%d %H:%M:%S' )

    模板内置date这么玩:{{ date | date:"Y-m-d H:i:s" }}

    5.在Django中如何正确完整地删除一个App(这个我没试过)

    1.删除models.py
    无论是删除一个单独的model还是删除整个App,都需要首先删除models.py文件中的模型。
    ./manage.py migrate your_app_name zero
    删除models.py中的数据模型。
    2.删除整个App文件夹
    在settings.py的Installed Apps中移除该app。
    在urls.py中移除该App相关内容。
    

     6.virtualenvwrapper的基本使用

    1.把所有的虚拟环境都放在一个地方;2.包装用于管理虚拟环境(创建,删除,复制);3.使用一个命令来环境之间进行切换。

    pip install virtualenvwrapper
    export WORKON_HOME=~/Envs  #设置环境变量
    mkdir -p $WORKON_HOME #创建虚拟环境管理目录
    find / -name virtualenvwrapper.sh #找到virtualenvwrapper.sh的路径
    source 路径 #激活virtualenvwrapper.sh
    可能会报错:VIRTUALENVWRAPPER_PYTHON=/usr/bin/python...bulabula,python指向出错
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
    重新source  virtualenvwrapper
    virtualenvwrapper.user_scripts creating /root/Envs/premkproject
    ...会创建一大堆命令
    lsvirtualenv    #列举所有的环境。
    cdvirtualenv    #导航到当前激活的虚拟环境的目录中,能够浏览它的 site-packages。
    cdsitepackages   # 直接进入到 site-packages 目录中。
    

       每次要想使用virtualenvwrapper 工具时,都必须先激活virtualenvwrapper.sh,另外,如果创建前要将虚拟环境保存到Envs中,就要先设置一下环境变量:export WORKON_HOME=~/Envs,再搭建。貌似必须搭建到这个~/Envs目录下,要不然管理不到。

    7.Django几个小点:

    ①模板中自定义style中class用点号'.',id用'#'

    ②values方法可以获取number字段的字典列表;values_list可以获取number的元组列表。

    values_list方法加个参数flat=True可以获取number的值列表。

    ③models中有用到choices的,想在模板中获取到它对应的中文,用--obj.get_字段名称_display。

    8.pycharm激活码地址--http://idea.lanyus.com/,日期只到19年5月4号,有时间可以破解个补丁...,

    据说这两个网站可以免费破解win10,

    技术流:https://blog.csdn.net/u014044812/article/details/82729151

    激活码:https://blog.csdn.net/WangJiankun_ls/article/details/79475947?utm_source=blogxgwz1

  • 相关阅读:
    linux命令查询大全
    常用的Linux命令
    网络工程师必备知识点
    Android app ADB命令
    (转)网络工程师笔记(二)
    (转)网络工程师笔记(一)
    心理学各大分支
    日常生活英语单词大全(转)
    oracle 迁移数据文件
    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'jeewx.weixin_account_user_relation' doesn't exist
  • 原文地址:https://www.cnblogs.com/fawaikuangtu123/p/9728973.html
Copyright © 2011-2022 走看看