• 幕客老师召集小伙伴
  • 运维高手36项修炼
  • python自动化运维项目实战
  • nginx从入门到实战
  • 阿里云与Centos7实战

DevOPS开发散记

一、散记

1、ipython

安装:

pip install ipython[all]

 

2、将工程所需要依赖包放入requirements.txt文件

这样,后续工程需要迁移安装,使用pip就会非常方便

$ pip freeze > ./requirements.txt
$ pip install -r path/requirements.txt 

 

3、raw_input和input区别

raw_input将输入的内容,强制转化为数字

input不会,将维持原有类型。如下:

>>> ll=input("input val")
input val123
>>> type(ll)
<type 'int'>
>>> ll=raw_input("input val")
input val123
>>> type(ll)
<type 'str'>
>>> 

 

4、django数据库修改同步

 修改完成modles后,需要进行增加的模型,同步到数据库中。操作方式如下:

python manage.py makemigrations 
python manage.py migrate

 

5、清空migrate表

如果迁移清空了migration的文件,同样需要清除数据库记录表迁移的记录,否则出现如下错误:

Running migrations:
  No migrations to apply.
Traceback (most recent call last):
......
RuntimeError: Error creating new content types. Please make sure contenttypes is migrated before trying to migrate apps individually.

所以需要登录数据库,清理库中对应的表:django_migrations

django_migrations

 

6、执行如下报错

执行python manage.py migrate 报出如下错误,去除modles中的配置db_table = "userinfo",就可以正常迁移

  File "/Library/Python/2.7/site-packages/django/contrib/contenttypes/models.py", line 58, in get_for_model
    " is migrated before trying to migrate apps individually."
RuntimeError: Error creating new content types. Please make sure contenttypes is migrated before trying to migrate apps individually.

貌似是1.8 的bug,需要执行如下方式:

/opt/python2.7/bin/python manage.py migrate --fake-initial

 

7、 git新建分支

本地操作,服务器部署

git checkout -b front_dev

git branch

git checkout front_dev

 

git checkout -b scanhosts_dev

git branch

git checkout scanhosts_dev

 

git checkout master

git add --all

git commit -m "all branch"

git push

 

//切换到master分支后,可以通过git branch -r 查看分支

git branch -r 

8、Python中子类继承父类

Python中和类继承一样,子类的__init__方法如果没有重新改写,那么将继承父类中的.

如果要既实现继承父类,然后又能改写,可以调用super方法。

class NmapDocker(NmapDev):

    def __init__(self,d_cmds,pass_lst):
        super(NmapDocker,self).__init__()

        d_cmds = d_cmds

 

9、ipython调试代码的时候可以用到reload的方法实现重新加载已经加载的模块来调试

需要注意:不能支持from import的这种方式导入的模块

In [25]: import sys

In [26]: reload(sys)
<module 'sys' (built-in)>

 

10、子类继承并且重新改写父类的方式2,如下:

In [58]: class P(object):
    ...:     def __init__(self):
    ...:         self.aa = "1111111111"
    ...:         print self.aa
    ...:         
    ...:         

In [59]: class C(P):     
    ...:     def __init__(self):
    ...:         P.__init__(self)
    ...:         self.bb = "2222222222"
    ...:         print self.aa,self.bb
    ...:         
    ...:         
    ...:         

In [60]: c=C()           
1111111111
1111111111 2222222222

11、mysql数据库表中添加字段

语句:

alter table physicalserverinfo add `vir_type` varchar(2) default '';

 

12、git提交代码到远程

git push origin scanhosts_dev 

 

13、git 合并代码

如果要将多个自分支的代码合并到master上

首先,将自己分支代码提交

然后,切换到master分支

gir checkout master

用merge合并

git merge 对应的分支名称

 

14、git回滚代码

git log --pretty=oneline

git reset --hard 3628164 //写前六位就可以

 

15、使用json.loads()方法时候,出现如下错误:

json.loads(json_data)

错误如下:

  File "/opt/python2.7/lib/python2.7/json/decoder.py", line 382, in raw_decode

    obj, end = self.scan_once(s, idx)

ValueError: Expecting property name: line 1 column 2 (char 1)

即去除引号前的u,和字符串中的单引号',利用replace进行替换。

json_data = json_data.replace("'", '"').replace("u", "")

 

16、xadmin报错

报错:from django.forms.widgets import RadioFieldRenderer, RadioChoiceInput

ImportError: cannot import name RadioFieldRenderer 
解决方法:与xadmin搭配的 你的django版本错了,不要使用最新的1.11,因为最新版本里没有这个,建议使用1.9
 
17、git不支持空文件夹提交
 
可以在空文件夹下新建立.gitkeep文件
touch .gitkeep
然后再执行 git commit

 

 

DevOPS开发散记

Pingbacks已打开。

引用地址

暂无评论

发表评论