【问题标题】:Updating Web2py's auto_increment id with filled database?用填充的数据库更新 Web2py 的 auto_increment id?
【发布时间】:2016-05-21 07:01:21
【问题描述】:

我正在开发一个 web2py 项目,我需要向数据库中插入 500 多行数据。

问题是,如果我使用 Pgadmin 使用 'Insert' web2py auto_increment id 执行此操作,它无法识别数据并尝试使用 KEY 1 插入新行,这会导致 REPEATED PRIMARY KEY 错误。

有没有更好的方法来初始插入数据或修改起始auto_increment id值?

更新:

我已经像这样在 Web2py 上定义并创建了表,

db.define_table('Client_Size',
            Field('name', 'string'))

运行一次 web2py 在数据库上创建它之后,然后使用 Pgadmin III,像这样插入值,

INSERT INTO Client_Size(id, name) VALUES
(1, 'Small'), (2, 'Medium'), (3, 'Big');

这是一个简短的输入,但我有另一个有 500 个值,所以手动输入是不可能的。

之后,如果我尝试向Client_Size 添加新行,web2py 无法识别数据库已填充数据,并将 id 用作 1,从而产生错误。

【问题讨论】:

  • 这是一个现有的表,还是 web2py 创建的?如果是前者,你确定 id 字段是一个自动递增的整数字段吗?
  • 我已经在 web2py 上定义了所有表,然后使用 pgadmin 从那里添加了行,如果我尝试添加新行,它会说密钥已经存在。

标签: python postgresql web2py


【解决方案1】:

id 字段是一个自动递增的整数字段,这意味着数据库会自动用下一个值填充它。因此,您不应该尝试为该字段插入您自己的值——只需指定name 字段的值并让数据库处理id 的创建。 (即使它不是自动递增的,因为它作为表的主键,你也不想插入重复的值。)

【讨论】:

  • 谢谢!这解决了问题,只需插入没有 id 的值。我认为 web2py 处理了递增字段。
  • 很高兴它有帮助。随意接受答案。 :-)
猜你喜欢
  • 1970-01-01
  • 2020-10-22
  • 2021-12-13
  • 2011-05-10
  • 1970-01-01
  • 1970-01-01
  • 2011-10-13
  • 1970-01-01
  • 2011-04-05
相关资源
最近更新 更多