Sql web2py-以编程方式在一对多数据库上插入
早上好, 我有一个数据库,有三个表:Sql web2py-以编程方式在一对多数据库上插入,sql,database,data-access-layer,web2py,relational,Sql,Database,Data Access Layer,Web2py,Relational,早上好, 我有一个数据库,有三个表: db.define_table('person', Field('name', length=100), Field('dob', length=10), Field('address', 'text', length=255), Field('countryname', length=3), Field('statename', leng
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或表单,将一些数据插入。。。
e、 g:如果我将所有的值都插入到cardlist表中,则操作必须使我能够自动将相关记录(如果不存在,则创建新记录)填充到其他表中。
这是因为它是一个带有外键的关系数据库
使用DAL的web2py是否可以实现这一点?还是必须编写原始sql命令
谢谢大家用这个方法就行了。它返回新创建的记录的ID,您可以使用该ID插入到引用字段中:
person = db.person.insert(name=..., dob=..., ...)
opslist = db.opslist.insert(opid=..., dop=..., ...)
db.cardlist.insert(opid=opslist, name=person, ...)
您是说您拥有个人、opslist和相关cardlist记录的数据,但不知道个人和opslist记录是否存在(因此在插入cardlist记录之前可能需要或不需要创建这些记录)?假设您拥有person和opslist数据,您如何知道它们可用于标识每个表中的单个唯一记录(您的person和opslist模型定义似乎不包含任何唯一性约束)?如果没有唯一记录的保证,就无法知道在cardlist的参考字段中输入什么ID。嗨,安东尼,对不起,但我相信我无法完美地解释。我会为person表添加新信息:person(name等)、operation event(opslist表)以及cardlist表的countryname、statename zip。在这种情况下,我可以用哪种方式将此信息放入数据库?不使用sqlform或表单?例如,使用:db.cardlist.insert(name=,opid=,countryname=,state=,zip=)