2017年4月3日月曜日

開発環境

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

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

SHARPEN YOUR PENCIL(No. 6522)

コード(Emacs)

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

import sqlite3


class UseDatabase:

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

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

    def __exit__(self):
        pass

if __name__ == '__main__':
    dbconfig = {'host': '127.0.0.1',
                'user': 'vsearch',
                'password': 'vsearchpasswd',
                'database': 'vsearchlogDB'}
    ud = UseDatabase(dbconfig)
    print(ud.dbconfig)
    cursor = ud.__enter__()
    print(cursor)

入出力結果(Terminal, IPython)

$ ./DBcm.py
{'host': '127.0.0.1', 'user': 'vsearch', 'password': 'vsearchpasswd', 'database': 'vsearchlogDB'}
<sqlite3.Cursor object at 0x10a1d0810>
$

0 コメント:

コメントを投稿