示例#1
0
def check(is_auto_set=True,
          is_reference=True,
          is_value_default=False,
          **kargs):
    namespace = model(is_auto_set=is_auto_set,
                      is_reference=is_reference,
                      is_value_default=is_value_default,
                      **kargs)
    SAdb.config.getopt()
    sa = SAdb()
    sa.open(recreate=True)
    b = sa.bind(namespace,
                builder=orm.Builder,
                fieldtypemap=fieldtypemap,
                base_klas=Base)

    C = namespace['C']
    c = C()
    if not is_value_default:
        c.code = 'alabala'
    if is_reference:
        Name = namespace['Name']
        if not is_auto_set:
            c.ime = Name()
        c.ime.nime = 'aa'
    else:
        c.ime = 'aa'

    s = sa.session()
    s.save(c)
    s.flush()
    cexp = str(c)
    s.expire(c)
    c = None
    s.close()

    s = sa.session()
    r = C.code == 'alabala'
    #   print C.code
    res = s.query(C).filter(C.code == 'alabala').all()
    if _debug: print res
    assert len(res) == 1, str(res) + ', case: ' + namespace['case']
    r = str(res[0])
    assert r == cexp, '\n'.join([namespace['case'], r, '!=', cexp])

    if is_reference:
        res = s.query(Name).one()
        assert res.nime == 'aa'

    sa.destroy(True)
示例#2
0
def check( is_auto_set =True, is_reference =True, is_value_default =False, **kargs):
    namespace = model( is_auto_set =is_auto_set, is_reference =is_reference, is_value_default =is_value_default, **kargs)
    SAdb.config.getopt()
    sa = SAdb()
    sa.open( recreate=True)
    b = sa.bind( namespace, builder= orm.Builder, fieldtypemap= fieldtypemap, base_klas= Base )

    C = namespace[ 'C']
    c = C()
    if not is_value_default:
        c.code = 'alabala'
    if is_reference:
        Name = namespace['Name']
        if not is_auto_set:
            c.ime = Name()
        c.ime.nime = 'aa'
    else:
        c.ime = 'aa'

    s = sa.session()
    s.save( c)
    s.flush()
    cexp = str( c)
    s.expire( c)
    c = None
    s.close()

    s = sa.session()
    r = C.code == 'alabala'
#   print C.code
    res = s.query( C).filter( C.code == 'alabala' ).all()
    if _debug: print res
    assert len(res) == 1, str(res) +', case: '+ namespace['case']
    r = str(res[0])
    assert r==cexp, '\n'.join( [ namespace['case'], r, '!=', cexp] )

    if is_reference:
        res = s.query( Name).one()
        assert res.nime == 'aa'

    sa.destroy( True)
示例#3
0
    b = sa.bind( types, builder= o2r.Builder, fieldtypemap= fieldtypemap, base_klas= Base )
    all = [
        A( oid=1, time=12, z='a12-last'),
        A( oid=1, time=2,  z='a2' ),
        A( oid=1, time=6,  z='a6' ),

        A( oid=2, time=2,  z='b1' ),
        A( oid=2, time=4,  z='b-last' ),

        A( oid=3, time=5,  z='c5 time-dup' ),
        A( oid=3, time=5,  z='c-last' ),

        A( oid=4, time=7,  z='d-last' ),
    ]

    session = sa.session()
    sa.saveall( session, *all )
    session.flush()
    session.clear()

    lasts_by_time_obj = set( a for a in all if 'last' in a.z or 'dup' in a.z )
    lasts_by_dbid_obj = set( a for a in all if 'last' in a.z )
    lasts_by_time_id  = set( a.db_id for a in lasts_by_time_obj )
    lasts_by_dbid_id  = set( a.db_id for a in lasts_by_dbid_obj )

    def test( q, expect, obj =True, db_id =True):
        r = list( q )
        #if not obj: r = set( tuple(a) for a in r )         #XXX set(r) won't work!
        for z in r: print z
        assert set( (db_id and (obj and x.db_id or x['db_id']) or x)
                    for x in r ) == set( expect), '''
示例#4
0
        a.children.append( b1)
        a.children.append( B( name='oja', ) )

        a2 = A( name='uuk')
        f1 = Feature( name='hair', value='red')
        f2 = Feature( name='nose', value='long')
        f3 = Feature( name='size', value='tall')
        a.features.extend( [f1,f2, f3] )
        a2.features.append( f1)
        a2.features+= [f1, f2]

        bf1 = B_Fea( owner=b1, fea=f1)
        bf2 = B_Fea( owner=b1, fea=f2)
        b1.ffeas.append( f3)
        print 11111111111111, b1
        return locals()

    pops = populate()
    sext = SesExt( fixer=fixer)
    ses = sadb.session( extension=sext)
    sadb.saveall( ses, pops)
    ses.flush()
    ses.clear()
    print '============'
    for a in sadb.query_ALL_instances( ses, A):
        print a
    print '============'
    for a in sadb.query_ALL_instances( ses, B):
        print a
# vim:ts=4:sw=4:expandtab
示例#5
0
        return reflector.obj2str(me, Base, builder.column4ID.name)

    Base.__repr__ = Base.__str__ = str1
    from svd_util.attr import setattr_kargs
    Base.__init__ = setattr_kargs

    from dbcook.usage.samanager import SAdb
    SAdb.Builder = Builder
    SAdb.config.getopt()

    sa = SAdb()
    sa.open()
    sa.bind(locals(), fieldtypemap)

    population = populate()
    session = sa.session()
    sa.saveall(session, population)
    session.flush()
    session.close()

    for klas in [Employee, Engineer, Manager, Hacker, Dept]:
        for q in [
                sa.query_ALL_instances, sa.query_BASE_instances,
                sa.query_SUB_instances
        ]:
            print '====', klas, q.__name__
            #r = session.query( klas)
            r = q(session, klas)  #.all()
            if not r: print r
            else:
                for a in r:
            pass
    else: Model=Entity

    class Name( Element):
        name = TextD()
    class Darzhava( Model): #by ISO 3166
        name = saw.Type4Reference( Name)

    s = SAdb( 'sqlite')
    s.open( recreate=False)

    #from dbcook.usage.sa_hack4repeatability import hack4repeat
    #hack4repeat()
    s.bind( locals(), fieldtypemap=fmap, builder=saw.Builder, base_klas= Element, force_ordered=True)
    #s.query_all_tables()
    session = s.session()

else:
    from sqlalchemy import *
    from sqlalchemy import Text as String
    from sqlalchemy.orm import *
    meta = MetaData( 'sqlite:///proba1.db')
    meta.bind.echo= 'echo' in sys.argv))

        #decomposed by joined_table
    table_Entity = Table( 'Entity', meta,
        Column( 'disabled', type= Boolean, ),
        Column( 'time_trans', type= Date, ),
        Column( 'time_valid', type= Date, ),
        Column( 'obj_id', type= Integer, ),
        Column( 'db_id', primary_key= True, type= Integer, ),