以下为我编程期间遇到的错误并进行记录,起始时间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. 【windows】共享文件夹设置

    控制面板\网络和 Internet\网络和共享中心\高级共享设置 在当前的域\公用\家庭网络 下文件和打印机共享开关打开 现在可以在 计算机-网络 里面看到共享的计算机啦 选中自己想要分享的文件,右键 ...

  2. Redis的安装、服务配置

    在网上找了很多资料,有些可以正常安装,有些安装会出毛病,仔细想了想,还是自己整理一份吧,仅仅为自己下次再用的时候,能够快速的定位到可以正常用的文章! 我使用的是VMware Workstation P ...

  3. python计算机基础(三)

    简述Python垃圾回收机制: 当x=10,赋值x=11,的代码,也就是10没有对应的变量名, 10在python眼中相当于垃圾,就会被清理掉,释放内存. 对于下述代码: x = 10 y = 10 ...

  4. 并查集:POJ1182-食物链(并查集比较高端的应用)

    食物链 Time Limit: 1000MS Memory Limit: 10000K Description 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C ...

  5. Linux学习-备份的种类、频率与工具的选择

    完整备份之累积备份 (Incremental backup) 还原的考虑 如果是完整备份的话.若硬件出问题导致系统损毁时,只要将完整备份拿出来,整个给他倾倒回去硬盘, 所有事情就搞定了!有些时候 (例 ...

  6. mac 安装composer的方法

    打开命令后 cd /usr/local/bin 然后执行 curl -sS https://getcomposer.org/installer | php 接下来 sudo mv composer.p ...

  7. [转载] C语言细节,写的非常棒!

    这篇文章主要讨论C语言细节问题.在找一份工作的时候,语言细节占的比例非常小,之前看某个贴着讨论,估计语言细节在面试中,占了10%的比重都不到,那为什么还要研究C语言的细节呢,我觉得有三个原因促使我总结 ...

  8. Educational Codeforces Round 2 Edge coloring of bipartite graph

    题意: 输入一个二分图,用最少的颜色数给它的每条边染色,使得同一个顶点连的边中颜色互不相同. 输出至少需要的颜色数和任意一种染色方案. 分析: 证明不会,只说一下(偷瞄巨巨代码学到的)做法. 假设点的 ...

  9. HDU 5237 Base64 模拟

    题意: 输入一个明文串,输出\(k\)次\(Base64\)加密以后得到的串. 分析: 好像没什么Trick,直接模拟就行了. 注意:长度为\(3k+1\)的串,后面会有两个\(=\).长度为\(3k ...

  10. 到底有没有必要兼容IE版本

    我就说两个字:"没有". 理由如下: 1.占资源空间,额外去写css hack去做页面兼容处理.(主要是增加css代码) PS:css hack 不是W3C的规范,css hack ...