A few months ago, I had a look to the Apache Cassandra project ( http://cassandra.apache.org/), contributed by Facebook, and the Thrift API ( http://thrift.apache.org/). It seems to be an interesting way to design and deploy distributed databases seamlessly accessible from python. Do anyone have experimented it?
2010/12/29 Dave Cowden <dave.cow...@gmail.com> > I think that a distributed repository infrastructure is what's needed > for robust sharing of objects and model data. For sure, such > repositories would likely be based on a database-- but the repo would > need to expose crud ( create read update delete) functions via http, > so it is firwall and internet friendly. > > On 12/29/10, jelle feringa <jelleferi...@gmail.com> wrote: > > Hi, > > > > Recently I had enough of storing OCC's cad as files. > > Sometimes all you need is a database. > > Turns out that its really easy to do so. Perhaps its worth sharing how > this > > can be done... > > Though this might be pretty trivial technically speaking, it can open up > > interesting ways of collaborating on projects. > > > > -jelle > > > > > > ================================================ > > from OCC.Utils.Topology import Topo > > > > __author__ = 'jdf' > > > > > > from sqlalchemy import * > > from sqlalchemy.ext.declarative import declarative_base > > from sqlalchemy.orm import sessionmaker, scoped_session > > > > from OCC.Utils.Construct import make_cube > > #from OCC.TopoDS import TopoDS_Shape > > # > > #TopoDS_Shape.__eq__ = lambda x: TopoDS_Shape.IsEqual(x) > > > > cube = make_cube(1,1,1) > > > > engine = create_engine('sqlite:///jelle.db') > > Base = declarative_base(bind=engine) > > Session = scoped_session(sessionmaker(engine)) > > > > def comp_brep(brepA, brepB): > > import ipdb; ipdb.set_trace() > > print 'jajajaj',brepB, brepA > > return brepA.IsEqual(brepB) > > > > class Individual(Base): > > '''used to store data about an individual > > a row forms a generation > > ''' > > __tablename__ = 'individual' > > > > id = Column(Integer, primary_key=True) > > #name = Column(String) > > #fullname = Column(String) > > #password = Column(String) > > generation = Column(Integer) > > ancestor_a = Column(PickleType()) > > ancestor_b = Column(PickleType()) > > brep = Column(PickleType(mutable=False)) #comparator=comp_brep)) #) ) > > fitness = Column(Float) > > > > Base.metadata.create_all() > > > > > > indy = Individual() > > indy.ancestor_a = 'parent_a' > > indy.fitness = 12. > > indy.ancestor_b = 'parent_a' > > indy.generation = 1 > > #indy.id = 0 > > indy.brep = cube > > > > ''' > > to INSERT many rows very quickly, use the "executemany" style of > > insertion: > > > > > > connection.execute(table.insert(), [{'foo':'row1'}, {'foo':'row2'}, > > {'foo':'row3'}, ...]) > > ''' > > > > s = Session() > > # s.begin() > > s.add(indy) > > s.commit() > > s.close() > > > > print('closed the previous db session\nlet\'s see if we can read back the > > objects, that be cool...') > > > > engine = create_engine('sqlite:///jelle.db', echo=True) > > Base = declarative_base(bind=engine) > > Session = scoped_session(sessionmaker(engine)) > > s = Session() > > > > from OCC.BRep import BRep_Tool > > bt = BRep_Tool().Pnt > > > > for indy in s.query(Individual): > > print indy.id > > for i in Topo(indy.brep).vertices(): > > print bt(i).Coord() > > ================================================ > > > > -- > Sent from my mobile device > > _______________________________________________ > Pythonocc-users mailing list > Pythonocc-users@gna.org > https://mail.gna.org/listinfo/pythonocc-users >
_______________________________________________ Pythonocc-users mailing list Pythonocc-users@gna.org https://mail.gna.org/listinfo/pythonocc-users