sqlite3:创建没有列的表

Posted

技术标签:

【中文标题】sqlite3:创建没有列的表【英文标题】:sqlite3: creating table with no columns 【发布时间】:2011-06-01 19:37:06 【问题描述】:

我想在 sqlite3 中创建没有列的表。在 postgres 数据库中是可能的,但在 sqlite3 数据库中是不可能的。有什么方法可以实现这一点,还是根本不支持(可能不在 sql 标准中?)我检查了 sqlite3 CREATE TABLE 语法,似乎必须至少有一列,但也许我错过了什么?

【问题讨论】:

我很好奇零列表能解决什么问题。需要详细说明吗? 我正在做一个宠物项目并进行测试。我可以在 postgres 中创建空表用于测试目的,但同样的自动化测试对于 sqlite 失败。所以我想确定我是否做错了什么。由于sql标准不支持空表,我不需要关心它。 @Tim 可能想创建空表,然后继续添加列。 【参考方案1】:

SQLite 不支持零列表。或者在 SQL 标准中。

【讨论】:

有趣的是,it's possible in PostgreSQL,不过 @LukasEder 那...除了完全的学术目的之外似乎没有多大用处。 PostgreSQL 甚至不需要 FROM 子句,所以它不需要像 Oracle 那样的 DUAL 表。 @BaconBits:您可以使用这些表在连接中实现一些很酷的谓词逻辑。没有人说这不是学术性的:)【参考方案2】:

我也有同样的问题,因为我想要一个只有 rowid 字段的表格。虽然您可能无法创建没有列的表,但您可以使用以下代码创建一个只有 rowid 字段作为主键的表:

CREATE TABLE tablename (rowid INTEGER PRIMARY KEY) WITHOUT ROWID;

【讨论】:

【参考方案3】:

您可以创建只有 id 列的表,而不是创建空表:

def create_table(DATABESE_NAME):
    conn = sqlite3.connect(DATABESE_NAME)
    c = conn.cursor()
    c.execute(''' CREATE TABLE IF NOT EXISTS rate_table(
    id INTEGER PRIMARY KEY AUTOINCREMENT) ''')
    conn.commit()
    conn.close()

【讨论】:

以上是关于sqlite3:创建没有列的表的主要内容,如果未能解决你的问题,请参考以下文章

在 sqlite3 中修改列的类型

Django / sqlite3“OperationalError:没有这样的表”关于线程操作

sqlalchemy.exc.OperationalError:(sqlite3.OperationalError)没有这样的表:mytable

如何使用循环打印 sqlite3 中的表以及 python 中的列名以及如何准确获取列名?

django:sqlite3.OperationalError:没有这样的表

如何显示 Java SQLite3 数据库中存在的表名? [复制]