zoukankan      html  css  js  c++  java
  • python sqlAlchemy实例关系

    #!/usr/bin/python
    #
    -*- encoding:utf-8 -*-
    from sqlalchemy import *
    from sqlalchemy.orm import *
    engine=create_engine("sqlite:///./test.db")
    metadata=MetaData()
    party=Table('party',metadata,
    Column('id',Integer,primary_key=True),
    Column('name',String(32),nullable=False),
    Column('type',String(32),nullable=False),
    )
    person=Table('person',metadata,
    Column('id',Integer,ForeignKey('party.id'),primary_key=True),
    Column('sex',String(16),nullable=False),
    )
    org=Table('org',metadata,
    Column('id',Integer,ForeignKey('party.id'),primary_key=True),
    Column('capital',Integer,nullable=False),
    Column('manager_id',Integer,ForeignKey('person.id'),nullable=False ),
    )
    #每个机构有一个manager,每个人可以兼多个机构manager

    usr=Table('usr',metadata,
    Column('id',Integer,primary_key=True),
    )

    metadata.drop_all(engine)
    metadata.create_all(engine)

    class Party(object):
    pass

    class Org(Party):
    pass
    class Person(Party):
    pass

    mapper(Party,party,polymorphic_on=party.c.type,
    polymorphic_identity="party")

    mapper(Org,org,inherits=Party,
    polymorphic_identity="org",
    properties={
    'manager':relationship(Person,primaryjoin=person.c.id==org.c.manager_id,backref='manage_orgs'),
    },)
    mapper(Person,person,inherits=Party,
    polymorphic_identity="person",
    )


    o=Org()
    o1=Org()
    p=Person()
    p.name=u"周剑"
    p.sex=u''

    o.name=u'测试机构'
    o.capital=200
    o.manager=p

    o1.name=u'测试机构 乙方'
    o1.capital=200
    o1.manager=p

    Session=sessionmaker(bind=engine)
    s=Session()

    s.add(p)
    s.add(o)
    s.add(o1)
    s.commit()

    print dir(s)
    c=0

    for r in s.query(Party).all():
    if type(r) == Org:
    print r.id,r.name,r.capital,r.manager.name
    else:
    print r.id,r.name
    for m in r.manage_orgs:
    print u"\t管理了 "+m.name
    s.commit()
  • 相关阅读:
    .net Delegate
    Kaprekar constant(卡普雷卡尔黑洞)
    How to get URL and QueryString value in an ASP.NET page
    Jquery and ashx achieve login of ajax
    MAC 开发笔记——Objective C 语法之Category和Extension
    MAC 开发笔记 - ObjectiveC 语法之selector
    肮脏的选择
    MAC Air 使用手记
    MAC 开发笔记——Objective C 之 基础设计模式
    太平洋战争——比B.o.B还是差了点
  • 原文地址:https://www.cnblogs.com/wuxi/p/2289085.html
Copyright © 2011-2022 走看看