PySQLite(2)
読み書き部分は完成しました。モジュールとして使うときは、次のように使います。
#!/usr/bin/env python2.6 # -*- coding: utf-8 -*- import unittest import os from pysql import * class DBTests(unittest.TestCase): def test_create_table(self): if os.path.exists("example.db"): os.remove("example.db") db = DB("example.db") db.create('Products', ('name', 'price')) rows = db.find({'from':'pysql_master',}) self.assertEqual(("Products", 2, "name,price"), next(rows)) self.assertRaises(StopIteration, next, rows) def test_insert(self): if os.path.exists("example2.db"): os.remove("example2.db") db = DB("example2.db") db.create('Products', ('name', 'price')) rows = db.find({'from':'Products',}) self.assertRaises(StopIteration, next, rows) inp= [("りんご", 30), ("みかん", 50)] for v in inp: db.insert("Products", v) rows = db.find({'from':'Products',}) for v in inp: self.assertEqual(v, next(rows)) self.assertRaises(StopIteration, next, rows) if __name__ == '__main__': unittest.main()
コマンドラインから使うときには、型はstringしか使えませんが次のように使います。
createコマンドでtableを作ります。
$ ./pysql.py create test.db Products name price
tableはpysql_master内で管理しています。findで確認できます。
$ ./pysql.py find test.db pysql_master
('Products', 2, 'name,price')
tableをもうひとつ追加
$ ./pysql.py create test.db factorials input value
$ ./pysql.py find test.db pysql_master
('Products', 2, 'name,price')
('factorials', 3, 'input,value')
いくつか値を入れてみます。
$ ./pysql.py insert test.db Products apple 30
$ ./pysql.py insert test.db Products orange 50
$ ./pysql.py insert test.db factorials 0 1
$ ./pysql.py insert test.db factorials 1 1
$ ./pysql.py insert test.db factorials 2 2
$ ./pysql.py insert test.db factorials 3 6
$ ./pysql.py insert test.db factorials 4 24
$ ./pysql.py insert test.db factorials 5 120
$ ./pysql.py find test.db factorials
('0', '1')
('1', '1')
('2', '2')
('3', '6')
('4', '24')
('5', '120')
$ ./pysql.py find test.db Products
('apple', '30')
('orange', '50')
$
普通に動きました。