2016/06/27

最近的新增需求是要起一個ftp server
可是不想要用vsftp或其他daemon
所以直接使用pyftpdlib
還滿方便的 有很多範例可以直接套用
但用了後發現沒有log功能
再查了一下資料
發現只要加紅色二行就搞定了

import logging

from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer
from pyftpdlib.authorizers import DummyAuthorizer

authorizer = DummyAuthorizer()
authorizer.add_user('user', '12345', '.', perm='elradfmwM')
handler = FTPHandler
handler.authorizer = authorizer

logging.basicConfig(filename='/var/log/pyftpd.log', level=logging.INFO)

server = FTPServer(('', 2121), handler)
server.serve_forever()

2016/06/18

在python中撈取mysql的資料
在cursor.execute後可以用cursor.fetchone()及cursor.fetchall()

如果回傳的只有一筆資料 可以使用cursor.fetchone() 可以少一點code
語法

cursor.execute(select count(*) from table)
result = cursor.fetchone()
print result[0]

如果回傳的資料有很多 則使用cursor.fetchall()

語法
cursor.execute(select * from table)
result = cursor.fetchall()
if result:
for record in result:
print record[0]


2016/06/17

今天找了一下有關mysql 日期時間的使用
大約記一下
分為

NOW()        2001-02-02 19:00:46

CURDATE()    2001-02-02

CURTIME()    19:00:46

使用加減功能

NOW() - INTERVAL 1 DAY  結果       2001-02-01 19:00:46

CURDATE() + INTERVAL 1 DAY  結果      2001-02-03 00:00:00


未來      >         NOW()       <        過去

select * from table where enddate > NOW()          表示在NOW()之後的時間      表示未來    大未來

select * from table where enddate < NOW()          表示在NOW()之前的時間      表示過去    小過去

http://wen198599.pixnet.net/blog/post/22450019-mysql%E6%97%A5%E6%9C%9F%E5%92%8C%E6%99%82%E9%96%93%E5%87%BD%E6%95%B8%E4%B8%8D%E6%B1%82%E4%BA%BA

http://www.webasp.net/article/25/24538.htm

http://www.w3school.com.cn/sql/func_now.asp

http://www.mysqltutorial.org/mysql-now/
今天又有一個需求
因為資料在計算的過程中會有時間差
所以有可能會產生二筆相同的資料
如下圖













可是因為某些原因
不希望讓使用者看到
原本想用DISTINCT來解決
但DISTINCT只能用在一個欄位
花時間找了一下資料
發現直接用group by就可以解決了

select user,ip from table group by ip;












http://tc.wangchao.net.cn/bbs/detail_1846934.html

2016/06/15

最近的工作就是一直用python來連mariadb

今天有個需求
要把從db撈出來的資料寫到檔案
找到這個方便的方法

cursor.execute("test from  test_table")
result = cursor.fetchall()
if result:
f = open("/tmp/data",'w')
        for record in result:
                print record[0],          #在畫面上印出資料
print>>f, record[0]    #把資料寫進檔案

2016/06/11

今天使用python要把資料塞進mysql時一直出問題
明明就有執行
也沒錯誤訊訊息
但資料就是沒進去
本來以為是跳脫字元的問題
試了也沒有
後來找到一個方便的語法
也不用再考慮單引號 雙引號要使用跳脫字元的情況
語法如下
最後的 db.commit() 一定要下
就是因為這個沒下
才試了一下午
最後還是問了高手才知道的

sql="insert into table values(%s,%s,%s,)"
cursor.execute(sql,(now,i,88888))
db.commit()

now是現在時間
i是變數
88888是數字

對應到table
datetime
varchar(50)
bigint(20)

2016/06/10

在shell 中呼叫 python 可以把變數一起丟給python

#!/bin/bash
var1=a
var2=b
python test.py $var1 $var2


test.py 內容如下

import sys
print sys.argv[0] # prints python_script.py
print sys.argv[1] # prints var1
print sys.argv[2] # prints var2


輸出結果為
test.py
a
b

在shell中 awk是不能直接使用shell定義的變數的
必須在awk的一開頭定義
範例如下

#!/bin/bash
a=3
b=4

awk -v a=$a -v b=$b '$1 == a {print $2}' test_data