2016-02-25 75 views
1

我在spyne中定义模型以在“SOAP11”中生成多个级别时遇到了问题。 我首先使用了示例,但是我的任务是为已经存在的表生成服务,所以我陷入困境并试图理解在Spyne属性或Sqlalchemy中寻找什么。针对现有数据库结构的Spyne模型

准确地说,我会从网站采取例子,说明我正在试图达成:

class Permission(TableModel): 
__tablename__ = 'permission' 

id = UnsignedInteger32(pk=True) 
application = Unicode(values=('usermgr', 'accountmgr')) 
operation = Unicode(values=('read', 'modify', 'delete')) 
perm_user_id = integer 

最后一个字段是FK用户表,但它的名字是从USER_ID

不同
class User(TableModel): 
__tablename__ = 'user' 

id = UnsignedInteger32(pk=True) 
user_name = Unicode(32, min_len=4, pattern='[a-z0-9.]+', unique=True) 
full_name = Unicode(64, pattern='\w+(\w+)+') 
email = Unicode(64, pattern=r'[a-z0-9._%+-][email protected][a-z0-9.-]+\.[A-Z]{2,4}') 
last_pos = Point(2, index='gist') 
permissions = Array(Permission).store_as('table') 

--- SQL生成尝试添加“当user.id = permission.user_id”但我需要另一个领域(perm_user_id)被过滤

帮我定义类来获得正确的内标签..实际上它将会深入3个课程。

Thanx提前,尤里·

回答

1

你的答案是正确的。作为简单表的替代方案,您可以省略列定义,并让sqlalchemy的反射引擎找出它。

meta = TableModel.Attributes.sqla_metadata 
meta.reflect() 
class User(TableModel): 
    __table__ = meta.tables['user'] 

将使用尽可能多的信息从表格列及其类型中重构User类。

1

找到它自己,抱歉打扰任何人,

from spyne.model.complex import table 
Permissions= Array(permission).customize(store_as=table(right='perm_user_id'))