【发布时间】:2014-03-16 20:18:15
【问题描述】:
早安, 我有一个包含三个表的数据库:
db.define_table('person',
Field('name', length=100),
Field('dob', length=10),
Field('address', 'text', length=255),
Field('countryname', length=3),
Field('statename', length=100),
)
db.define_table('opslist',
Field('opid', length=10),
Field('dop', length=10),
Field('type_operation', length=25),
)
db.define_table('cardlist',
Field('opid', db.opslist),
Field('name', db.person),
Field('countryname', length=3, required=True),
Field('statename', length=100, required=True),
Field('zip', length=5, required=False),
)
我会通过代码插入,意味着不使用 sqlform 或表单,将一些数据插入... 例如:如果我将所有值都插入到 cardlist 表中,则操作必须使我能够将相关记录(如果不存在,则创建新记录)自动填充到其他表中。 这是因为它是一个带有外键的关系数据库 ...
这可以通过使用 DAL 的 web2py 实现吗?还是我必须编写我的原始 sql 命令?
谢谢大家
【问题讨论】:
-
你是说你有一个人、一个 opslist 和一个相关的 cardlist 记录的数据,但你不知道这个人和 opslist 记录是否存在(所以他们可能有也可能没有在插入卡片列表记录之前创建)?假设您有 person 和 opslist 数据,您怎么知道它们可用于识别每个表中的单个唯一记录(您的 person 和 opslist 模型定义似乎不包含任何唯一性约束)?如果没有唯一记录的保证,就无法知道在 cardlist 的参考字段中输入什么 ID。
-
嗨安东尼,对不起,但我相信我无法完美解释。我会输入新信息:人员(人员表的名称等),操作事件(opslist 表)和国家/地区名称,卡列表表的州名 zip。在这种情况下,我可以将这些信息放入数据库中吗?不使用 sqlform 或表单?例如使用:db.cardlist.insert(name =
, opid = , countryname = , state = , zip = )
标签: sql database data-access-layer web2py relational