python – web2py中的复合键
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – web2py中的复合键,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1395字,纯文字阅读大概需要2分钟。
内容图文
我有一个在web2py中定义的表
db.define_table(
'pairing',
Field('user',writable=True,readable=True),
Field('uid', writable=True , readable=True)
)
此表需要具有唯一的用户和uid组合.我查看了web2py文档,但没有直接的方法来定义组合键.
我们如何在web2py中定义复合方式
解决方法:
这取决于你想要做什么.默认情况下,web2py会自动创建一个自动递增的id字段作为每个表的主键,这是建议的方法.如果您正在处理具有复合主键的旧数据库并且无法更改架构,则可以指定primarykey属性,但有一些限制(如here所述):
db.define_table('pairing',
Field('user', writable=True, readable=True),
Field('uid', writable=True, readable=True),
primarykey=['user', 'uid'])
也许您真的不需要真正的复合主键,但您只需要一些方法来确保只在表中插入唯一的用户/ uid值对.在这种情况下,您可以通过为两个字段之一指定正确构造的IS_NOT_IN_DB验证器来完成此操作:
db.define_table('pairing',
Field('user', writable=True, readable=True),
Field('uid', writable=True, readable=True))
db.pairing.uid.requires=IS_NOT_IN_DB(db(db.pairing.user==request.vars.user),
'pairing.uid')
这将确保uid在用户匹配插入的用户的新值的记录集中是唯一的(因此用户和uid的组合必须是唯一的).注意,验证器(例如IS_NOT_IN_DB)仅在通过SQLFORM或使用.validate_and_insert()方法插入值时应用,因此上述内容不适用于表中的任意插入,但主要用于用户输入提交.
您还可以使用SQL在表上设置多列唯一约束(您可以直接在数据库中或通过web2py .executesql()方法执行此操作).但是,即使有这样的约束,您仍然希望在应用程序中进行一些输入验证,以避免数据库出错.
内容总结
以上是互联网集市为您收集整理的python – web2py中的复合键全部内容,希望文章能够帮你解决python – web2py中的复合键所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。