python - SQLite3 序列类型没有增加

标签 python sqlite

我正在使用 SQLite3 创建数据库。 我的 python 版本是 2.7.5。

在创建数据库之前,我只是创建了示例数据库并测试了它是否能正常运行。 失败了 id 即使我也没有递增 将其声明为 serial 类型。

我创建了一个简单的数据库:

import sqlite3
con = sqlite3.connect('sample.db')
cur = con.cursor()
cur.execute("""CREATE TABLE sample(id serial,test real)""")
cur.execute("""INSERT INTO sample(test) VALUES(?)""",(3,))
cur.execute("""INSERT INTO sample(test) VALUES(?)""",(6,))
cur.execute("""INSERT INTO sample(test) VALUES(?)""",(8,))
con.commit()

然后我获取了所有数据:

data = cur.execute("""SELECT * from sample""")
t = data.fetchall()

In [33]: t
Out[33]: [(None, 3.0), (None, 6.0), (None, 8.0)]

我期望这样:Out[33]: [(1, 3.0), (2, 6.0), (3, 8.0)] 但是,如您所见,所有 id 元素都是 None

我该如何解决这个问题? 我知道我可以通过增加一个变量并插入它来完成。 像这样:

id += 1
cur.execute("""CREATE TABLE sample(id serial,test real)""")
id += 1
cur.execute("""INSERT INTO sample(test) VALUES(?)""",(3,))
id += 1
cur.execute("""INSERT INTO sample(test) VALUES(?)""",(6,))

但是,这不是很糟糕吗?我不想这样做。 我想让我的代码清晰明了。

最佳答案

SQLite 中没有serial 数据类型。创建表的正确方法是使用 AUTOINCREMENT在 SQLite 中:

CREATE TABLE sample ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
                      test REAL);

关于python - SQLite3 序列类型没有增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19726028/

相关文章:

r - 您可以 "tie"或提供 R 中 data.frame 的替代实现吗?

c - 如何在静态链接的C程序中嵌入luasql.sqlite3?

c# - 使用 C# 查询 SQlite 数据库时出现 ConstraintException

python - WSGI 应用程序中的 cherrypy 和相对路径

ios - 将本地 sqlite 文件同步到 iCloud

python - 在 python 中,何时以及如何使用没有冒号或缩进的 for 和 if 语句?

python - 在两个列表中迭代递增的值

c# - SQLite。修复 sqlite-net-wp8 项目依赖项

python - 如何更改使用 theano 的设备

python - 如何使用 jira-python 检索与 JIRA 票证关联的 'links'?