周报

1. MySQL 日期比较大小

存储格式为 2017-1-1 0:0:0, 至匹配年月日,如下匹配:

mysql> select * from user_comment_likes where date(operated_at)='2017-10-12';
mysql> select * from user_comment_likes where Year(operated_at)='2017';
mysql> select * from user_comment_likes where Month(operated_at)='10';

数据库中存储的是unix时间戳,显示成日期格式:

mysql> select from_unixtime(created) from comment_likes limit 1;

2. Python中unix时间戳和字符串时间的互转

  • 用python time模块生成mysql datetime日期 time.strftime("%Y-%m-%d %H:%M:%S")
  • 用python time模块实现unix时间戳和标准日期的转换
unix时间戳转标准时间
In[57]: t = time.localtime(1507800598.375)
In[58]: time.strftime("%Y-%m-%d %H:%M:%S", t) # 时分秒还可用%T
Out[58]: '2017-10-12 17:29:58'
标准时间转unix时间戳
In[41]: t = time.strptime("2017-10-12 17:31:03", "%Y-%m-%d %H:%M:%S")
In[42]: time.mktime(t)
Out[42]: 1507799429.0
datetime模块处理日期
In [1]: from datetime import datetime, timedelta
In [2]: now = datetime.now()
In [3]: now
Out[3]: datetime.datetime(2017, 10, 24, 23, 25, 29, 521355)
In [4]: print(now)
2017-10-24 23:25:29.521355
In [5]: today = now.strftime("%Y-%m-%d %T")
In [6]: today
Out[6]: '2017-10-24 23:25:29'
对日期做增减
In [9]: date = '2017-10-24 23:25:29'
In [12]: now = datetime.strptime(date, "%Y-%m-%d %H:%M:%S")
In [13]: now
Out[13]: datetime.datetime(2017, 10, 24, 23, 25, 29)
In [15]: pre = now - timedelta(days=1)
In [16]: pre
Out[16]: datetime.datetime(2017, 10, 23, 23, 25, 29)
In [17]: pre.strftime("%Y-%m-%d %T")
Out[17]: '2017-10-23 23:25:29'
获得本周周一
In[204]: monday = datetime.now() - timedelta(days=datetime.now().weekday())
In[205]: monday
Out[205]: datetime.datetime(2017, 11, 6, 17, 38, 52, 99000)
In[206]: monday.strftime("%Y-%m-%d")
Out[206]: '2017-11-06'
datetime操作时间戳
datetime.fromtimestamp(time.time())
Out[207]: datetime.datetime(2017, 11, 10, 17, 40, 38, 876000)
周报_第1张图片

3. git的使用

  • 生成密钥公钥,公钥放到服务器端
  • git branch 查看分支
  • git branch -d(D) tagetBranch 删除(强制)本地分支
  • git checkout tagetBranch 切换分支,可切换到本地没有但服务器端有的分支
  • git add yourFile 把更改部分添加到缓存区
  • git commit -m '备注' 把缓存区内容提交到HEAD区
  • git pull [origin targetBranch] 拉取服务器最新的代码
  • git push origin targetBranch 把HEAD中内容推送到远端服务器
  • git stash 用于当前代码没有提交到缓存区,切换分支时使用,再切换回来时用git stash apply恢复现场
  • git submodule update --init --recursive 更新项目中的submodule模块

注意: 代码完成合并到master后,本地以及远程分支都要删除。


11.6 补充

  • git fetch origin master 获取远程master分支代码同步到现在分支
  • git push origin --delete targetBranch 删除远程分支

4. 定时任务

  • crontab -e 编辑定时任务
  • crontab -l 浏览正在执行的定时任务
  • ' * * * * * ' 分 时 天 月 周
# 每半个小时执行一次脚本
*/30 * * * * cd /home/bot/services/circle-admin/script/;  /home/bot/services/pyenv27/bin/python update_user_comment_like_data.py
# 每天0点执行一次脚本
0 0 * * * python test.py
参考:

http://yiranwuqing.iteye.com/blog/960836
http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html

5. PyCharm连接远端服务器

  • 同步本地代码到服务器 Tools/Deployment/Configurations
  • 提交代码到服务器 VCS/commit

6.日志

  • 为单独一个脚本配置日志路径时,用单独的handler去处理
logger = logging.getLogger("comment_like")

filename = 'logs/update_user_comment_like_data.log'
formatter = logging.Formatter("%(asctime)s %(levelname)s: %(message)s")
handler = logging.FileHandler(filename)
handler.setFormatter(formatter)

logger.setLevel(logging.INFO)
logger.addHandler(handler)

不要用basicConfig,因为这会修改整个的日志输出路径

logging.basicConfig(
     level=logging.INFO,
     format='[%(asctime)-15s %(filename)s line:%(lineno)d] %(levelname)-8s %(message)s',
     filename='logs/update_user_comment_like_data.log',
     filemode='a'
)

你可能感兴趣的:(周报)