Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql web2py-以编程方式在一对多数据库上插入_Sql_Database_Data Access Layer_Web2py_Relational - Fatal编程技术网

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=)