以下为我编程期间遇到的错误并进行记录,起始时间2017-6-21
时间:2020/01/03
问题现象:在django中单独运行脚本提示没有环境变量
错误提示:django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
解决示例代码如下:
if __name__ == "__main__":
#设置环境变量,默认环境变量存储在django项目的manage.py中
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CrazyEye.settings")
#加载app
import django
django.setup()
#这里要最后载入运行的模块
from backend import main
obj = main.HostManager()
obj.interactive()
时间:2018/11/21
问题现象:ajax 执行异步提交后,在访问日志看出现了2次post执行
分析:默认ajax提交是执行一次,然后获取返回结果,出现了2次应该在模板里还会有一次提交。
解决:仔细查看前端执行ajax提交功能的按键button,发现button标签写的有问题:
<button type="submit" class="btn btn-primary" onclick="SavePassword()">Save changes</button>
这里 type="submit" 就是问题根本,在执行ajax后会再次执行submit,所以会出现2次提交,把submit修改为button后问题解决。
时间:2018/8/13
错误提示:TypeError: the JSON object must be str, not 'bytes'
出现场景:通过request.put提交修改数据到服务器端,客户端python版本:3.6.1,服务端版本:3.5.3版本,django版本:1.11,服务器端通过json.loads(request.body)接收数据进行loads提示以上错误。
解决:request.body.decode('utf-8')将bytes类型转换为str类型。解决。
另:我在python3.6.1本机测试未使用转码没有提示错误。 ----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 48039)
Traceback (most recent call last):
File "/opt/python3/lib/python3.6/socketserver.py", line 639, in process_request_thread
self.finish_request(request, client_address)
File "/opt/python3/lib/python3.6/socketserver.py", line 361, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/opt/python3/lib/python3.6/socketserver.py", line 696, in __init__
self.handle()
File "/root/python_study/high_ftp/core/main.py", line 84, in handle
recv_cmd = self.request.recv(1024).decode()
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd3 in position 1: invalid continuation byte
发现计算文件大小使用了len,使用方式不对。修改使用了os.path.getsize计算 Exception happened during processing of request from ('127.0.0.1', 4316)
Traceback (most recent call last):
File "C:\Python36-32\lib\socketserver.py", line 639, in process_request_thread
self.finish_request(request, client_address)
File "C:\Python36-32\lib\socketserver.py", line 361, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "C:\Python36-32\lib\socketserver.py", line 696, in __init__
self.handle()
File "D:\51cto\python\Advance4\homework\Adv_ftp\high_ftp\core\main.py", line 106, in handle
out_result = fun(**cmd_json)
File "D:\51cto\python\Advance4\homework\Adv_ftp\high_ftp\core\main.py", line 68, in put
new_file_md5 = m.hexdegest()
AttributeError: '_hashlib.HASH' object has no attribute 'hexdegest'
拼写错误了 Traceback (most recent call last):
File "D:/1_oldboyS14_Py/Advance4/homework/Adv_ftp/high_ftp/ftpclient/ftpclient_core.py", line 121, in <module>
ftp.interaction()
File "D:/1_oldboyS14_Py/Advance4/homework/Adv_ftp/high_ftp/ftpclient/ftpclient_core.py", line 48, in interaction
out = func(mess)
TypeError: get() takes 1 positional argument but 2 were given
原因是:发现我定义了2个同名的函数,导致出错 Traceback (most recent call last):
File "D:/1_oldboyS14_Py/Advance4/homework/Adv_ftp/high_ftp/ftpclient/ftpclient_core.py", line 123, in <module>
ftp.interaction()
File "D:/1_oldboyS14_Py/Advance4/homework/Adv_ftp/high_ftp/ftpclient/ftpclient_core.py", line 48, in interaction
out = func(mess)
File "D:/1_oldboyS14_Py/Advance4/homework/Adv_ftp/high_ftp/ftpclient/ftpclient_core.py", line 66, in get
if recv_msg['id'] == '200':
TypeError: string indices must be integers
类型错误 ----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 53957)
Traceback (most recent call last):
File "D:\Python36\lib\socketserver.py", line 639, in process_request_thread
self.finish_request(request, client_address)
File "D:\Python36\lib\socketserver.py", line 361, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "D:\Python36\lib\socketserver.py", line 696, in __init__
self.handle()
File "D:\1_oldboyS14_Py\Advance4\homework\Adv_ftp\high_ftp\core\main.py", line 126, in handle
out_result = fun(**cmd_json)
File "D:\1_oldboyS14_Py\Advance4\homework\Adv_ftp\high_ftp\core\main.py", line 19, in get
self.request.send(kwargs.encode('utf-8'))
AttributeError: 'dict' object has no attribute 'encode'
应该发送时候转换为字符串发送 ----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 54134)
Traceback (most recent call last):
File "D:\Python36\lib\socketserver.py", line 639, in process_request_thread
self.finish_request(request, client_address)
File "D:\Python36\lib\socketserver.py", line 361, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "D:\Python36\lib\socketserver.py", line 696, in __init__
self.handle()
File "D:\1_oldboyS14_Py\Advance4\homework\Adv_ftp\high_ftp\core\main.py", line 127, in handle
out_result = fun(**cmd_json)
File "D:\1_oldboyS14_Py\Advance4\homework\Adv_ftp\high_ftp\core\main.py", line 25, in get
self.request.send(line.encode('utf-8'))
AttributeError: 'bytes' object has no attribute 'encode'
文件打开读取就是rb模式,所以这里不用在encode了
TypeError: argument of type 'socket' is not iterable
写错了
应该是:if s is self.server: 写成 if s in self.server 新手都会这样 故障提示:
SQLAlchemy插入数据产生警告

cursors.py:166: Warning: (1366, "Incorrect string value: '\\xD6\\xD0\\xB9\\xFA\\xB1\\xEA...' for column 'VARIABLE_VALUE' at row 479")result = self._query(query)

分析:我的环境是在windows系统里使用Pycharm进行sqlalchemy对数据库的初始化连接操作,就是没有建表,只做数据库的连接都报这个错误,windows系统默认使用的是gbk的字符集,而我在windows系统上使用的数据库也是在本机windows系统上,而报错是因为字符集的问题,但是我指定了数据库的字符集是utf8的,然每次连接依然有这个错误,个人分析应该是系统字符串造成的。所以我改到使用linux系统里的mysql建立一个utf8的数据库后,使用未出现上述问题,所以分析应该是系统字符串导致的。

故障提示:

cursors.py:166: Warning: (1265, "Data truncated for column 'pub_date' at row 1")

原因:今天学习sqlalchemy添加数据,定义的字段类型为DATE,然后就随便写了个日期,运行后报这个错误,然后表里日志都为0,仔细查看,原来是日期没有写对,比如写成2015-02-31,运行就会报错如上。修改成标准的自然月份日期后,运行正确。

问题:在写MQ主机管理作业时候,在客户端启动程序报错如下:

Traceback (most recent call last):
File "mq_client.py", line 11, in <module>
run()
File "/opt/python3/zhaoyong/mq/client/core/main.py", line 79, in run
setting.localhost_ip)
AttributeError: module 'conf.setting' has no attribute 'localhost_ip'

答案:

这里不需要这个参数,所以在配置文件中删除了。而程序里没有删除。删除程序里的这个参数即可。

故障提示:

response = tmp_list[body_data[1]]['data']
TypeError: list indices must be integers or slices, not str

答案:以上提示说明你类型使用错误,上面tmp_list本来是个列表,我按照字典方式使用。

故障提示:

File "D:/51cto/python_dev/oldboy_dev_python/Advance5/homework/Stu_Mam_System/study/student_system.py", line 167, in modify_score
filter(Study_record.stu_id == student_obj.id).first()
AttributeError: 'Query' object has no attribute 'id'

说明:在使用sqlarchemy写学员管理系统时候,数据库查询操作出现错误如上。

答案:进入查看167行代码,发现之前在查询生成student_obj对象时候,在查询末尾没有写.first(),导致这里报错。在之前的查询里添加.first()解决。

故障提示:

learn_all = self.session(class_m2m_learn).filter(class_m2m_learn.class_id==class_obj.id).all()
TypeError: 'Session' object is not callable

解决:使用sqlalchemy进行数据表查询时候,没有写session.query中的 query

故障提示:在使用sqlalchemy进行查询

File "D:\1_oldboy_S14_git_python\oldboy_dev_python\Advance5\homework\Stu_Mam_System\core\teacher_view.py", line 50, in create_class
print(learn_all.learns)
AttributeError: 'list' object has no attribute 'learns'

解决:分析我查询使用的是session.query.......all(),结尾用all()返回的是一个列表。所以是不可以直接采用对象名.字段名提取数据的。要用for循环一下

故障提示:前端使用jquery提示

错误:Uncaught Error: Bootstrap's JavaScript requires jQuery

位置:bootstrap.min.js:6

解决方案:引入jquery.min.js放在bootstrap.min.js文件之前引用

故障提示:

self.status.split(' ',1)[0], self.bytes_sent
AttributeError: 'NoneType' object has no attribute 'split'

出现的情况:我在写前端页面时候,通过在from表单内的input标签填入数据,然后使用button 确定按钮进行ajax提交到后台django 的数据库进行插入数据,插入完成使用httpresponse返回成功字串,我这里出现的情况是数据插入成功,但是在ajax的success 没有接收到后端httpresponse的返回字串

解决:经过测试,直接使用Input+ajax提交,去掉form表单,为什么这样呢,继续学习。

故障说明:前端ajax以列表信息获取select多选数组,以数组提交到django后台,后台使用getlist('标签name')获取到的列表为空。

解决:后台如果获取前端提交过来的数组,后台获取写法为:getlist('标签name[]'),要在名称后面加入:[]

故障:在前端进行select编辑多选界面,当不选择的时候进行提交,使用ajax判断为空的情况下使用:变量名.length 报错

解决:var 变量 = $('#id').val()

    if (变量 == null)  进行判断

故障出现:

在linux系统内部使用 curl http://xxxxxx/?a=1&b=2 get访问在django后台只能够获取第一个参数,后面的全部无法获取

分析:由于url中有&,其他参数获取不到,在linux系统中& 会使进程系统后台运行。

解决:必须对&进行下转义才能在后台获取到所有参数: curl http://xxxxxx/?a=1\&b=2

未注意一个逗号引发的问题

故障出现:写完一个class后,在构造函数中的每个参数后增加了一个逗号(未注意),如下:

class c1:

def __init__(self, a):

self.__a = a,

这样在类实例化后,self.__a 的值为一个元组或者列表,去掉逗号,就会以原类型出现。

故障出现:

通过django的models创建表后,在通过前端生成的数据写入表的时候,日志提示:

D:\Python36\lib\site-packages\pymysql\cursors.py:166: Warning: (1264, "Out of range value for column 'salt_task_jid' at row 1")

查看数据库,此字段的数据不对。

分析:

根据字面意思,应该是字段输入的长度超过了默认的表的字段长度。

解决:

重新修改models这个表的字段长度,解决。

故障出现:

循环字典提示:ValueError: too many values to unpack (expected 2)

分析:字典这个是一个迭代器对象,参考官方文档找到下列说明,字典只支持Key的遍历,,如果想对key,value,则可以使用items方法。

故障出现:

在通过saltstack-api进行开发时候,在同一个minion上多次运行state.sls,第二个任务开始返回的信息是:

['The function "state.sls" is running as PID 537 and was started at 2018, Jun 13 12:31:22.535288 with jid 20180613123122535288']

分析:由于state.sls是串行的,就是说不能在同一个minion上同时执行多个state.sls,而刚才即便中断了,但是命令已经下发给minion了,所以再次执行报错。

解决:等待minion执行完state.sls,master再次执行命令就不报错了。

故障出现:

linux下使用curl http://xxxx/x?a=1&b=2 ,我通过django写的api接口只能获取到1,后面的无法获取到,百度了找到了问题。

解决:在Linux下使用curl访问多参数url GET参数的问题,在linux系统中& 会使进程系统后台运行,必须对&进行下转义。写法如下:

curl http://xxxx/x?a=1\&b=2  注意:是&号前是一哦那个“ \ " 进行了转义

python学习之-- 故障记录汇总的更多相关文章

  1. 优秀Python学习资源收集汇总(强烈推荐)

    Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl ...

  2. [转]优秀Python学习资源收集汇总

    Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl ...

  3. python学习: 优秀Python学习资源收集汇总--转

    Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl ...

  4. 优秀Python学习资源收集汇总--强烈推荐(转)

    原文:http://www.cnblogs.com/lanxuezaipiao/p/3543658.html Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的 ...

  5. Python学习小目录汇总

    python其他知识目录 python基础知识-1 1.typora软件使用 2.python解释器安装 3.Python解释器环境变量添加 4.计算机编码知识: 5.输出print(): 6.变量 ...

  6. python学习day16 模块(汇总)

    模块(总) 对于range py2,与py3的区别: py2:range() 在内存中立即把所有的值都创建,xrange() 不会再内存中立即创建,而是在循环时边环边创建. py3:range() 不 ...

  7. 优秀Python学习资源

    优秀Python学习资源收集汇总(强烈推荐)   Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮 ...

  8. python学习两月总结_汇总大牛们的思想_值得收藏

    下面是我汇总的我学习两个月python(version:3.3.2)的所有笔记 你可以访问:http://www.python.org获取更多信息 你也可以访问:http://www.cnblogs. ...

  9. 一份超全的Python学习资料汇总

    一.学习Python必备技能图谱二.0基础如何系统学习Python?一.Python的普及入门1.1 Python入门学习须知和书本配套学习建议1.2 Python简史1.3 Python的市场需求及 ...

随机推荐

  1. python 爬取知乎图片

    先上完整代码 import requests import time import datetime import os import json import uuid from pyquery im ...

  2. 896. Monotonic Array

    An array is monotonic if it is either monotone increasing or monotone decreasing. An array A is mono ...

  3. strace用法

    strace   --  trace system calls and signals     strace是Linux环境下的一款程序调试工具,用来监察一个应用程序所使用的系统调用及它所接收的系统信 ...

  4. webpack4搭建Vue开发环境笔记~~持续更新

    项目git地址 一.node知识 __dirname: 获取当前文件所在路径,等同于path.dirname(__filename) console.log(__dirname); // Prints ...

  5. EditPlus 比较完整的快捷键记录

    FileFtpUpload Ctrl+Shift+S 上传文件到FTP 服务器 FileNew Ctrl+N 新建普通的文本文档 FileNewHtml Ctrl+Shift+N 创建一个空白的 HT ...

  6. yield关键字有什么作用

    所属网站分类: python基础 > 语句 作者:goodbody 链接: http://www.pythonheidong.com/blog/article/10/ 来源:python黑洞网  ...

  7. GoF23种设计模式之行为型模式之迭代器模式

    一.概述    给定一种语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子.二.适用性1.当访问一个聚合对象的内容而无需暴露它的内部表示的时候.2.当对聚合对象的多 ...

  8. Git for Windows 工具的使用(一)

    如果你还不知道什么是Git,只知道GitHub,但是还不会用,我想这个教程会帮助你. 前言 鉴于网上目前的教材都太落后,GitHub for Windows已经更新了多个版本,好多界面都发生了变化,所 ...

  9. Linux学习-SELinux 初探

    什么是 SELinux 什么是 SELinux 呢?其实他是『 Security Enhanced Linux 』的缩写,字面上的意义就是安全强化的 Linux 之意! 当初设计的目标:避免资源的误用 ...

  10. servlet 作用

    什么是Servlet Servlet是一个Java编写的程序,此程序是基于Http协议的,在服务器端运行的(如tomcat),是按照Servlet规范编写的一个Java类. 在BS架构中,早期的Web ...