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:创建没有列的表的主要内容,如果未能解决你的问题,请参考以下文章
Django / sqlite3“OperationalError:没有这样的表”关于线程操作
sqlalchemy.exc.OperationalError:(sqlite3.OperationalError)没有这样的表:mytable
如何使用循环打印 sqlite3 中的表以及 python 中的列名以及如何准确获取列名?