2017年4月5日水曜日

開発環境

Head First Python (Paul Barry (著)、O'Reilly Media)のChapter 9.(The Context Management Protocol: Hooking Into Python's With Statement) の SHARPEN YOUR PENCIL(No. 6559) を取り組んでみる。

Relational Database は MySQL、MariaDBの代わりに SQLite を使用。

SHARPEN YOUR PENCIL(No. 6559)

コード(Emacs)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import sqlite3


class UseDatabase:

    def __init__(self, dbconfig: dict) -> None:
        self.dbconfig = dbconfig

    def __enter__(self) -> 'cursor':
        self.conn = sqlite3.connect(self.dbconfig['database'] + '.sql')
        self.cursor = self.conn.cursor()
        return self.cursor

    def __exit__(self, exc_type, exc_value, exc_trace) -> None:
        self.conn.commit()
        self.cursor.close()
        self.conn.close()

if __name__ == '__main__':
    dbconfig = {'host': '127.0.0.1',
                'user': 'vsearch',
                'password': 'vsearchpasswd',
                'database': 'vsearchlogDB'}
    with UseDatabase(dbconfig) as cursor:
        _SQL = '''select * from log'''
        cursor.execute(_SQL)
        for row in cursor.fetchall():
            print(row)

入出力結果(Terminal, IPython)

$ ./DBcm.py
(None, '2017-03-30 10:30:01', 'Head First Python', 'aeiou', '127.0.0.1', 'safari', "{'o', 'e', 'a', 'i'}")
(None, '2017-03-30 10:30:24', 'SQLite', 'aeiou', '127.0.0.1', 'safari', "{'e', 'i'}")
$

0 コメント:

コメントを投稿