Do you know what kind of interface the custom class needs to provide in order to use sqlalchemy?
On Tue, Apr 12, 2016 at 8:57 PM GoldenBull Chen <[email protected]> wrote: > I have an existing table in Oracle: > -------------------------------------------------------- > CREATE TABLE test_tbl > ( > id NUMBER, > name VARCHAR2 (100), > val NUMBER, > CONSTRAINT test_tbl_pk PRIMARY KEY (id) > ); > --------------------------------------------------------- > > > In python, I tried to load the table using sqlalchemy, and everything works > fine: > > --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- > > # -*- encoding: utf8 -*- > > from pbtest_pb2 import * > from sqlalchemy import * > from sqlalchemy.orm import * > > metadata = MetaData() > > tbl = Table('TEST_TBL', metadata, > Column('id', Integer, primary_key=True), > Column('name', String(100)), > Column('val', Numeric), > ) > > > class TestType2(object): > pass > > > t = TestType2 # note here, mapped to a custom class > > mapper(t, tbl) > engine = create_engine('oracle+cx_oracle://user:passwd@machine/orcl') > Session = sessionmaker(bind=engine) > session = Session() > for i in session.query(t): > print(i.id, i.name, i.val) > > --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- > > > > And here is the corresponding protobuf definition: > --------------------------------------------------------- > syntax = "proto3"; > > > message TestType > { > int32 id = 1; > string name = 2; > double val = 3; > } > > --------------------------------------------------------- > > > > Now I want to re-use the class generated by proto compiler, so I change > the class used in mapping: > --------------------------------------------------------- > > t = TestType # now mapped to the generated class > > --------------------------------------------------------- > > > Then the piece of code failed with error: > > --------------------------------------------------------- > > Traceback (most recent call last): > File "D:/test/pbtest.py", line 22, in <module> > mapper(t, tbl) > File "<string>", line 2, in mapper > File "C:\Anaconda2\lib\site-packages\sqlalchemy\orm\mapper.py", line 629, > in __init__ > self._configure_pks() > File "C:\Anaconda2\lib\site-packages\sqlalchemy\orm\mapper.py", line 1223, > in _configure_pks > (self, self.mapped_table.description)) > sqlalchemy.exc.ArgumentError: Mapper Mapper|TestType|TEST_TBL could not > assemble any primary key columns for mapped table 'TEST_TBL' > --------------------------------------------------------- > > > Is it possible to reuse the generated class with sqlalchemy? > > -- > You received this message because you are subscribed to the Google Groups > "Protocol Buffers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at https://groups.google.com/group/protobuf. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/protobuf. For more options, visit https://groups.google.com/d/optout.
