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

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

【问题讨论】:

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

标签: sqlite create-table


【解决方案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()
    

    【讨论】:

      猜你喜欢
      • 2020-03-04
      • 2021-02-27
      • 1970-01-01
      • 2020-02-26
      • 1970-01-01
      • 1970-01-01
      • 2016-12-05
      • 1970-01-01
      • 2017-06-19
      相关资源
      最近更新 更多