当真正想写一些东西把这段时间的实践进行总结的时候,却无从下手,思前想后还是觉得把实践过程中的碰到各种坑进行罗列一下比较有意义。不过这样也存在一个问题,由于当时没有记录,填上的坑很多都没法复现了,只能根据记忆依次复述,希望有借鉴作用。
感谢廖大大的博客提供的Python教程,使得有机会开始Python的学习,一路下来受益匪浅,个中滋味无以言表。
言归正传,逐条罗列Q&A:
Q1、python解释器交互模式、运行.py、pip及mysql命令行在什么目录下运行?
python解释器交互模式工作于目标机器python的安装目录下
python运行.py文件需要切换目录至.py文件当前目录,再运行python app.py或者其他.py文件;利用pip安装第三方模块时,没有特定路径,只要不在python交互模式下即可
运行mysql命令行需要先切换到具体mysql安装目录下,运行mysql -u root – p,再输入安装密码即可进入
Q2、用Chrome浏览器,输入127.0.0.1 : 9000或者localhost:9000,为什么得到的都是一个下载?
这是由于编码问题导致的,解决方法参考:
return web.Response(body=b'<h1>Awesome</h1>’, content_type=’text/html’, charset=’UTF-8′)
Q3、执行代码后,Chrome浏览器显示以下内容的原因?
“500 Internal Server Error
Server got itself in trouble”
出现这个错误的原因很多,最有效的方法就是去查看INFO或者查看具体的错误类型以及指定的文件下的指定行数,一般是某些语句缺胳膊少腿的或者mysql命令不规范,增减个空格什么的,还有就是数据类型不匹配,无法进行相关操作等等
Q4、ORM重难点怎么理解?
刚开始理解起来比较困难所以找了一篇注释多的开始啃,然后敲敲打打,修修补补,跑通了再回去仔细琢磨下。具体参考:
http://blog.csdn.net/haskei/article/details/57075381
其中关于元类部分,请参考:http://stackoverflow.com/questions/100003/what-is-a-metaclass-in-python/6581949#6581949或者中文翻译:http://blog.jobbole.com/21351/
注意事项:ORM中对于查找以及update()和remove()方法都必须用@asyncio.coroutine装饰,变成一个协程。调用时使用user.save()不会有任何效果,因为调用save()仅仅是创建了一个协程,并没有执行它。一定要用:
yield from user.save()才真正执行了INSERT操作。
Q5、为什么连接不上mysql数据库?
连接数据库时不要理所当然的把别人的用户名和密码拿来用,用户名和密码在安装mysql数据库时设定,连接自己的mysql数据库需要使用自己的用户名和密码。数据库中建表时,各字段需要与Model中User、Blog、Comment类中的各个字段一一对应。