- SQLObject 簡単なデータベース作成
- DBはコード簡略のためにSQLite使用
- 2つのオブジェクトもといテーブルを作成して関連付けを行っている。(John Doeにのみ2つ関連付け)
# SQLObject サンプルコード
# coding: utf-8
from sqlobject import *
from pysqlite2 import dbapi2 as sqlite
sqlhub.processConnection = connectionForURI('sqlite:/C|/stat_work/mydb')
class Person(SQLObject):
fname = UnicodeCol()
mi = StringCol(length=1,default=None)
lname = UnicodeCol()
class Address(SQLObject):
street = StringCol()
city = StringCol()
state = StringCol(length=2)
zip = StringCol(length=9)
person=ForeignKey('Person')
Person.createTable()
Address.createTable()
# PersonのObject=DBのレコードを2つ作成
p = Person(fname="John",lname="Doe")
p.mi = 'Q'
p2=Person(fname=u'健太郎',lname=u'百瀬')
# AddressとPersonの関係を記述
Person.sqlmeta.addJoin(MultipleJoin('Address',joinMethodName='addresses'))
p.addresses
# Person"John Doe"に関するAddressを2つ作成
Address(street='123 W Main St', city='Smallsville',
state='MN', zip='55407', person=p)
Address(street='Nextst', city='Smallsville2',
state='MNor', zip='55407', person=p)
print p.addresses
print p3.fname.encode("shift-jis")
そして、チェック
from pysqlite2 import dbapi2 as sqlite
con = sqlite.connect("C:/stat_work/mydb")
curs = con.cursor()
curs.execute('select * from Address')
print curs.fetchall()
curs.execute('select * from Person')
for data in curs.fetchall():
print "no : " + str(data[0])\
+ " fname : " + data[1].encode("shift-jis")\
+ " mi : " + str(data[2])\
+" lname : " + data[3].encode("shift-jis")
#print unicode(data[1],"utf-8","ignore")
最終更新:2006年11月19日 00:52