2016年8月2日总结

实习一个月了,感觉后半段效率低下,心里毛躁,现在在这里总结一下,沉沉心


django:
MVC模式,模型视图控制器模型
    这是一个项目的树形结构
├── log
        ├── manage.py
        ├── property_msg
        │   ├── __init__.py
        │   ├── __pycache__
        │   │   ├── __init__.cpython-34.pyc
        │   │   ├── settings.cpython-34.pyc
        │   │   ├── urls.cpython-34.pyc
        │   │   └── wsgi.cpython-34.pyc
        │   ├── settings.py
        │   ├── urls.py
        │   └── wsgi.py
        ├── reptile
        │   ├── 1.html
        │   ├── admin.py
        │   ├── back.py
        │   ├── base.sh
        │   ├── change.json
        │   ├── change.py
        │   ├── house.py
        │   ├── __init__.py
        │   ├── log
        │   ├── log.err
        │   ├── migrations
        │   │   ├── 0001_initial.py
        │   │   ├── 0002_ip_pool.py
        │   │   ├── 0003_auto_20160728_1603.py
        │   │   ├── __init__.py
        │   │   └── __pycache__
        │   │       ├── 0001_initial.cpython-34.pyc
        │   │       ├── 0002_ip_pool.cpython-34.pyc
        │   │       ├── 0003_auto_20160728_1603.cpython-34.pyc
        │   │       └── __init__.cpython-34.pyc
        │   ├── models.py
        │   ├── proxy
        │   ├── proxy.py
        │   ├── __pycache__
        │   │   ├── admin.cpython-34.pyc
        │   │   ├── __init__.cpython-34.pyc
        │   │   ├── models.cpython-34.pyc
        │   │   ├── reptile.cpython-34.pyc
        │   │   ├── urls.cpython-34.pyc
        │   │   └── views.cpython-34.pyc
        │   ├── runing.py
        │   ├── sql.py
        │   ├── templates
        │   │   └── index.html
        │   ├── tests.py
        │   ├── urls.py
        │   └── views.py
        ├── reptile_housemsg.sql
        └── templates
            └── admin
                └── base_site.html


        模型层:
这个用的不少
class myModel(models.Model):
                我的字段 = models.CharField(max_length = 10);
                ......
            这就声明了一个数据库的表
            然后
            python3 manage.py makemigrations
            创建建表代码
            python3 manage.py migrate
            在数据库里面执行建表代码
            执行完数据库里面对应的表就有了
            
            查询
            a = myModel.objects.filter(asd = 1);
            相当 select * from mytable where asd = 1;
            写在脚本里面可字符串切片
            filter是获取一个查询子集,可以继续筛选的,这个在没真正获取数据的时候是没有查询数据库的
            是根据最终的查询来生成一个sql语句交给数据库执行
            QuerySet 这个是那个查询对象集,可迭代
            myModel.objects.raw('sql 语句');
            返回一个rawQuerySet ,用法差不多,不过不能继续分查询子集
            a.delete() 删除
            删除后二次切片索引向前移动,很蛋疼的玩意,下次写删除从后往前写
            a = myModel(x = 1 ,y = 2);
            a.save(); #插入
            a = myModel.objects.get(pk = 1);
            a.x = 1;
            a.save(); #修改
            这些是对数据库操作的,
            setting mysql 配置:
            
            DATABASES = {
 79     'default': {
 80         'ENGINE'    : 'mysql.connector.django',
 81         'NAME'      : 'house',
 82         'USER'      : 'root',
 83         'PASSWORD'  : 'rootPasswd',
 84         'HOST'      : 'localhost',
 85         'PORT'      : '3306',
 86         'OPTIONS'   : {
 87             'autocommit' : True,
 88         },
 89     }
            这是对安装了mysql。connector的玩法,
            


 79     'default': {
 80         'ENGINE'    : 'django.db.backends.mysql',
 81         'NAME'      : 'house',
 82         'USER'      : 'root',
 83         'PASSWORD'  : 'rootPasswd',
 84         'HOST'      : 'localhost',
 85         'PORT'      : '3306',
 86         'OPTIONS': {
 87             'autocommit': True,
 88         },
 89     }
 90 }
            
            这是安装了pymysql的写法,要在setting 同目录下的__init__.py里面加上:
            import pymysql
            pymysql.install_as_MySQLdb()
            
        视图:
            Request
            Response
            这两个货的概念是这样的:
            request 是用户请求你服务器的玩意的,里面有他的请求的信息,
            Response 根据请求,然后按你的逻辑返回给请求这个url的用户一个html返回结果
            HttpResponseRedirect 跳转
            HttpResponse 返回一个response对象,可以由字符串构造就是html码
            HttpResponseNotFound 很显然是not found
            render(请求对象 , '模板路径' , context{这个是模板变量与字符串的映射关系,以字典给出}) 和模板融合
            
        python 外部脚本调用django models:
            import sys , os; 
            sys.path.append('/home/adc/property_msg/')
            os.environ['DJANGO_SETTINGS_MODULE']='property_msg.settings'
            import django;
            django.setup();
            暂时还不知道为啥这么写,反正这么写就能调用了。。。。。
            爬虫可以用django的models还是很爽的,节省了操作数据库的代码,不过集成高了出了问题解决就是有些困难
            
    目前未解决的问题:
        django的mysql connector 线程多了就显示mysql太多连接了,就拒绝写数据库,只能保持几十个线程跑,还是等一单线程的主线程爬页码
        这样效率很低,一个我爱我家的爬虫竟然跑了一下午,速度简直不能忍
        
        链家的爬虫检查ip访问量,挂代理现在没有可用的好代理,除非自己花钱买,而且代理还会有其他我没接触过的东西来等着我
        
        django admin 中文mysql 上需要加上二进制检索,然而如此集成我很难修改,这就是用框架的弊端了吧
        admin的集成的东西想改动得废很多功夫,还不如自己写我感觉,但又不太想看js 和 css的东西很毛躁啊
        
        现在需要好好规划一下自己了,到底怎么搞才能成长快,这些就是一个月总结,虽然150行但是效率远远不够,还没能写出东西。
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
      
            

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值