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.