Python3とSQLite3でCUIの日記帳を作ってみる

はじめに

こんにちは、野村です。

今回は、Python3とSQLite3を使ってキャラクターベースの日記帳を作ってみます。

日記なんか、月ごとにテキストファイルを作って書けば済むものです。
というか、実際にそういう日記を付けていました。

でも、SQLで検索できる方が便利な気がして、ちょっとこんなのも作ってみたのですよ。

データベースの作成

今回は、ホームデレクトリ直下に「db」というデレクトリを作成して、その中にデータベースを置きます。

$ mkdir ~/db
$ cd ~/db
$ sqlite3 nikki.sqlite

以下のようにテーブルを作成します。

sqlite> create table nikki(
   ...> date varchar(20) primary key,
   ...> text text);

SQLite3のプロンプトを抜けるときは、Ctrl-d。

スクリプト

パスの通ったデレクトリに以下のスクリプトを置いて「nikki」と名前を付け、実行権限を与えます。

#!/usr/bin/env python3

import datetime
import sqlite3
import sys
import os

file_db = "/home/jake/db/nikki.sqlite"
file_tx = "/tmp/nikki.txt"

args = sys.argv
op = "r" if len(args) < 2 else args[1]
dt = "%" if len(args) < 3 else args[2]

cn = sqlite3.connect(file_db);
c = cn.cursor()

if op == "d": # DELETE
    if dt != "%":
        c.execute("DELETE FROM nikki WHERE date LIKE '"+dt+"'")
        cn.commit()
        print("OK")

if op == "r": # READ
    c.execute("SELECT * FROM nikki WHERE date LIKE '"+dt+"'")
    for row in c:
        print("-------------------")
        print(row[0])
        print("-------------------")
        print(row[1])
        print("")

if op == "w": # WRITE
    if os.path.isfile(file_tx):
        f = open(file_tx, 'r')
        txt = "".join(f.readlines()).strip()
        f.close()
        if txt != "":
            now = datetime.datetime.now().strftime("%Y-%m-%d_%H:%M:%S")
            data = (now, txt)
            c.execute('''INSERT INTO nikki (date, text) VALUES (?, ?)''', data)
            cn.commit()
            os.remove(file_tx)
            print("OK")

cn.close()

パーミッションは755。

$ chmod 755 nikki

使い方

記事を投稿する

長文を書く場合

ファイル「/tmp/nikki.txt」を作成し、そこに本文を保存し、以下のコマンドを実行します。

$ nikki w

コマンドを実行すると、ファイル「/tmp/nikki.txt」は自動的に消去されます。

一行だけ書く場合

一行日記の場合、コマンドラインから手軽に投稿できます。

$ echo "コマンドラインから日記を書いてみる" > /tmp/nikki.txt; nikki w

記事を表示する

すべての記事を表示

$ nikki

日付を曖昧検索して、表示する記事を絞り込むことができます。

2017年11月分を表示

$ nikki r 2017-11%

記事を削除する

2017年11月30日の記事をすべて削除

$ nikki d 2017-11-30%

最後に

以上、Python3とSQLite3でキャラクターベースの日記帳を作ってみました。

実際に半年ほどこれで日記を付けていたのだけど、PCを新調(UbuntuからWin10)したのを期に中断したままだったりする。

というわけで、今回はこれにて。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

野村 野村のプロフィール
メインPCはWindows10のVirtualBox上のFreeBSD。Linux/Unixの小ネタを求めて日々右往左往してたりする。