postgresql - 现有数据库结构的 Spyne 模型

标签 postgresql sqlalchemy spyne

我在 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/

相关文章:

postgresql - at 符号 (@) 与冒号 (:) for parameter assignment in postgres/npgsql

python - 使用 pyramid_tm 时,SQLAlchemy session.begin_nested() 应该与 transaction.commit() 一起提交吗?

SQLAlchemy if/not 查询 session 已附加

python - Spyne - 如何复制由spyne创建的wsdl文件的一个元素?

python - 如何测试 SOAP Web 服务的 RPC?

python - 有一个 Spyne 客户端的例子吗?

postgresql - pgsql 返回表错误 : column reference is ambiguous

postgresql - 如何使用重复的 1,2,3,4, 1,2,3,4,... 系列对行进行编号

ruby-on-rails - Postgres 在一列上选择重复但在另一列上选择不同

python - 允许用户使用 SQLAlchemy 从数据库审计跟踪中回滚