アットウィキロゴ
  1. 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