我在 spyne 中定义模型以在“SOAP11”中生成多个级别时遇到问题。 我最初使用的是示例,但我的任务是为已经存在的表生成服务,所以我陷入困境并尝试了解是在 Spyne 属性中还是在 Sqlalchemy 中查找。
准确地说,我将以网站为例并展示我想要达到的目标:
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._%+-]+@[a-z0-9.-]+\.[A-Z]{2,4}')
last_pos = Point(2, index='gist')
permissions = Array(Permission).store_as('table')
--- 生成的 SQL 尝试添加“WHEN user.id = permission.user_id”,但我需要过滤另一个字段 (perm_user_id)
帮我定义类以获得正确的内部标签。实际上它会再深 3 个类。
提前致谢,Yury
最佳答案
你的回答是正确的。作为简单表的替代方案,您可以省略列定义并让 sqlalchemy 的反射引擎解决。
meta = TableModel.Attributes.sqla_metadata
meta.reflect()
class User(TableModel):
__table__ = meta.tables['user']
将使用来自表列及其类型的尽可能多的信息重建 User 类。
关于postgresql - 现有数据库结构的 Spyne 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35636968/