Python+mysql編寫一個(gè)簡單的代碼量記錄器

  • 已然大四蔑歌,想當(dāng)初大一時(shí)在某處聽大神教誨:
    大學(xué)四年寫足十萬行代碼隘世,碼路遂成忘苛;

  • 前幾天想想是該把欠下的碼量補(bǔ)上了,于是花了一個(gè)晚上寫了個(gè)代碼量記錄器缔莲,其實(shí)也很簡單:用Python寫個(gè)簡陋的展示界面和與數(shù)據(jù)庫交互的按鈕哥纫,用MySQL保存插入的數(shù)據(jù);

  • 大概就是這樣子:


    1.png
2.png
  • 碼量一行填入要提交的代碼量痴奏,語言默認(rèn)是C++蛀骇,備注自己標(biāo)注,點(diǎn)擊commit按鈕則提交读拆, refresh按鈕從數(shù)據(jù)庫讀取數(shù)據(jù)并刷新頁面擅憔;
  • 建表語句是:
create table codeRecord
(
code_id int auto_increment,
code_date date not null default now(),
code_line int not null default 0,
code_type varchar(10) not null default 'C++',
code_comment varchar(20) default " ",
primary key(code_id)
)engine=innodb default charset=utf8;
  • Python版本是2.7 ,UI是用Python自帶的tkinter庫寫的檐晕,雖然有點(diǎn)難看暑诸,但自己用也還湊合,與MySQL進(jìn)行交互的庫是用mysql-connector-python棉姐,這個(gè)是第三方的屠列,需要自己下載并安裝到環(huán)境里,Google一番很容易伞矩;

  • 用數(shù)據(jù)庫表記錄下插入的記錄笛洛,方便以后做各種統(tǒng)計(jì)和分析

  • 下面直接把代碼貼上來吧:

#!/usr/bin/python
# -*- coding:UTF-8 -*-
from Tkinter import *
import tkFont
import mysql.connector as mariadb

codeTool = Tk()

config = {
'host':'127.0.0.1',  # 如果是跑在本地
'user':'xxxx',  # 數(shù)據(jù)庫用戶名
'password':'xxxxx',   # 數(shù)據(jù)庫密碼
'port':3306,
'database':'xxxxx',    # 數(shù)據(jù)庫名
'charset':'utf8'
}

feedbackText = StringVar()
feedbackText.set(' ')
codeLineText = StringVar()
codeTypeText = StringVar()
codeCommentText = StringVar()
codeTodayText = StringVar()
codeTotalText = StringVar()

def func_GUI(codeTool):
    codeTool.title("十萬行代碼")
    
    codeTool.minsize(400, 300)
    # 字體
    labFont = tkFont.Font(family='Fixdsys', size=25, weight=tkFont.BOLD)

    codeLineLab = Label(codeTool, text="碼量:  ", font=labFont)
    codeLineEnt = Entry(codeTool, textvariable=codeLineText)
    codeTypeLab = Label(codeTool, text="語言(默認(rèn):C++):  ")
    codeTypeEnt = Entry(codeTool, textvariable=codeTypeText)
    codeCommentLab = Label(codeTool, text="備注(默認(rèn)為空):  ")
    codeCommentEnt = Entry(codeTool, textvariable=codeCommentText)
    codeCommitBtn = Button(codeTool, text='Commit', command=func_codeCommit, width=6)
    codeRefreshBtn = Button(codeTool, text='Refresh', command=func_codeRefresh, width=6)

    showFont = tkFont.Font(size=40, weight=tkFont.BOLD)
    codeTodayLab = Label(codeTool, text="今日代碼量:    ", font=labFont)
    codeTodayNum = Label(codeTool, text=" ", textvariable=codeTodayText, font=showFont)
    codeTotalLab = Label(codeTool, text="總代碼量:      ", font=labFont)
    codeTotalNum = Label(codeTool, text=" ", textvariable=codeTotalText, font=showFont)

    codeFeedbackLab = Label(codeTool, text='連接錯(cuò)誤', textvariable=feedbackText)

    codeLineLab.grid(row=0, column=0)
    codeLineEnt.grid(row=0, column=1)
    codeTypeLab.grid(row=1, column=0)
    codeTypeEnt.grid(row=1, column=1)
    codeCommentLab.grid(row=2, column=0)
    codeCommentEnt.grid(row=2, column=1)

    codeCommitBtn.grid(row=3, column=0)
    codeRefreshBtn.grid(row=3, column=1)

    codeTodayLab.grid(row=4, column=0)
    codeTodayNum.grid(row=4, column=1)

    codeTotalLab.grid(row=5, column=0)
    codeTotalNum.grid(row=5, column=1)

    codeFeedbackLab.place(x=10, y=250)

    return codeTool

def func_codeRefresh():
    try:
        conn = mariadb.connect(**config)
    except Exception , e:
        print e
        feedbackText.set('連接失敗')
        conn.close()
        return
    cursor = conn.cursor()

    sqlToday = "select sum(code_line) as code_line from codeRecord where code_date = curdate();"
    sqlTotal = "select sum(code_line) as code_line from codeRecord;"

    try:
        cursor.execute(sqlToday)
        for cl in cursor:
            tVal = cl[0] if cl[0] else "0"
            codeTodayText.set(tVal)
        cursor.execute(sqlTotal)
        for cl in cursor:
            tVal = cl[0] if cl[0] else "0"
            codeTotalText.set(tVal)
    except Exception , e:
        feedbackText.set('查詢錯(cuò)誤')
        cursor.close()
        conn.close()

    cursor.close()
    conn.close()


def func_codeCommit():
    try:
        conn = mariadb.connect(**config)
    except Exception, e:
        print e
        feedbackText.set('連接失敗')
        conn.close()
        return
    cursor = conn.cursor()
    codeNum = codeLineText.get()
    codeType = codeTypeText.get()
    codeComment = codeCommentText.get()
    codeType = "C++" if codeType=="" else codeType
    codeComment = "forFun" if codeComment=="" else codeComment

    sql = "insert into codeRecord(code_line, code_type, code_comment) values(%s, %s, %s);"
    param = (codeNum, codeType, codeComment)
    try:
        cursor.execute(sql, param)
        conn.commit()
    except Exception, e:
        print e
        feedbackText.set('插入失敗')
        cursor.close()
        conn.close()
        return
    feedbackText.set('插入成功:'+codeNum)
    cursor.close()
    conn.close()
    #更新下數(shù)據(jù)
    func_codeRefresh()


if __name__ ==  "__main__":
    func_GUI(codeTool)
    codeTool.mainloop()

  • 代碼很簡單,一看便知乃坤;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末苛让,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子湿诊,更是在濱河造成了極大的恐慌狱杰,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厅须,死亡現(xiàn)場離奇詭異仿畸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門错沽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來簿晓,“玉大人,你說我怎么就攤上這事千埃°径” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵放可,是天一觀的道長谒臼。 經(jīng)常有香客問我,道長耀里,這世上最難降的妖魔是什么蜈缤? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮备韧,結(jié)果婚禮上劫樟,老公的妹妹穿的比我還像新娘。我一直安慰自己织堂,他們只是感情好叠艳,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著易阳,像睡著了一般附较。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上潦俺,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天拒课,我揣著相機(jī)與錄音,去河邊找鬼事示。 笑死早像,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的肖爵。 我是一名探鬼主播卢鹦,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼劝堪!你這毒婦竟也來了冀自?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤秒啦,失蹤者是張志新(化名)和其女友劉穎熬粗,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體余境,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡驻呐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年灌诅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片含末。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡延塑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出答渔,到底是詐尸還是另有隱情,我是刑警寧澤侥涵,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布沼撕,位于F島的核電站,受9級(jí)特大地震影響芜飘,放射性物質(zhì)發(fā)生泄漏务豺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一嗦明、第九天 我趴在偏房一處隱蔽的房頂上張望笼沥。 院中可真熱鬧,春花似錦娶牌、人聲如沸奔浅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽汹桦。三九已至,卻和暖如春鉴裹,著一層夾襖步出監(jiān)牢的瞬間舞骆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來泰國打工径荔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留督禽,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓总处,卻偏偏與公主長得像狈惫,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子辨泳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容