0

我正在尝试编写一个添加条目方法,但我可以让 id 的递增工作。它正在影响我拥有的其他方法,因为当我执行删除时,它会删除所有条目而不是删除特定行。你们能帮忙吗?

def addEntry () :

    #define cursor
    c=db.cursor()

    #execute cursor
    id=c.execute("select max(id)+1 from phones")

    # digs deep to get next id
    id = c.fetchall()[0].values()[0]

    #dosql 
    dosql("insert into phones values (%d,'%s','%s')" % (id,nameVar.get(), phoneVar.get()))
4

1 回答 1

0

在不了解确切问题的更多信息并且仅查看您发布的代码的情况下,我看到了一些东西。

  1. 为什么不使用 MySQL 中的 auto_increment 列作为您要实现的功能的“id”?

  2. 在检索行时,我从未见过以下语法:

    id = c.fetchall()[0].values()[0]

那条线对我不起作用,因为 c.fetchall()[0] 返回一个没有 values 方法的元组。由于您知道查询只会返回一行,因此您可以简单地执行以下操作:

id = c.fetchone()[0]

or

id, = c.fetchone()

3.您没有锁定表格,因此一次多次运行该代码可能不会给您所需的结果,并且您最终可能会得到 2 行的相同 id。

于 2012-09-18T20:14:18.910 回答