在 sqlite3 中创建表时出错

Posted

技术标签:

【中文标题】在 sqlite3 中创建表时出错【英文标题】:Error with create tables in sqlite3 【发布时间】:2017-06-06 19:41:15 【问题描述】:

我正在 python3 中学习 sqlite3。我使用语法在表中添加了 4 列

c.execute("CREATE table raman(ATOMIC NUMBER INT, SYMBOL TEXT, ROW INT , COLUMN INT)")     

我想为它们插入值,所以我正在写

c.execute("INSERT INTO raman VALUES(1,'H',1,'1')");      

在此之后,如果我打印表格,它不会向我显示插入的值。我正在使用此命令打印 print c.execute("SELECT * FROM SQLITE_master type='table'").fetchall()

【问题讨论】:

插入后请确保:[your connection object here].commit() 这听起来不像是错误,而是意外的结果。 连接对象的意思是??我正在编辑器中写作。 【参考方案1】:

完整的(最小的)序列是这样的。

>>> conn = sqlite3.connect(':memory:')
>>> c = conn.cursor()
>>> c.execute("CREATE table raman(ATOMIC NUMBER INT, SYMBOL TEXT, ROW INT , COLUMN INT)")
<sqlite3.Cursor object at 0x000000000296E490>
>>> c.execute("INSERT INTO raman VALUES(1,'H',1,'1')"); 
<sqlite3.Cursor object at 0x000000000296E490>
>>> conn.commit()
>>> for row in c.execute('SELECT * FROM raman'):
...     row
... 
(1, 'H', 1, 1)

在您发出 commit 之前,这些值不会(或不一定)出现在表格中。

【讨论】:

我正在做的是,我制作了单独的 .py 文件来插入值。所以我有。 import sqlite conn = sqlite3.connect('raman.db') c = conn.cursor() c.execute("CREATE table raman(ATOMIC NUMBER INT, SYMBOL TEXT, ROW INT, COLUMN INT)") c.execute("插入拉曼值(1,'H',1,'1')"); conn.commit() 当我打印这个时,它会告诉我这个:[] 我在终端尝试过,它仍然在打印 []。但我想看看我插入的值 我不知道可能出了什么问题。我已经编辑了答案中的代码以显示表格中的内容。 你到底在打印什么?

以上是关于在 sqlite3 中创建表时出错的主要内容,如果未能解决你的问题,请参考以下文章

在mysql集群中创建表时出错

在配置单元中创建表时向列添加默认值

在mysql中创建表时使用变量作为表名

在 SSMS (SQL Server) 中创建表

如何获得在Oracle中创建表时使用的查询?

在Oracle 11g 中创建表时如何保存表?