2017-06-14 41 views
0

我想在sqlite数据库表中创建一个列,其中我可以写分数和文本值。sqlite3.OperationalError:重复的列名:MOLECULE

c.execute("CREATE table MOLECULE(MOLECULE NUMBER INT, MOLECULE NAME TEXT, 'MOLECULAR FORMULA' TEXT)"); 

c.execute("INSERT INTO MOLECULE VALUES (1, 'WATER', 'H20')"); 

c.execute("INSERT INTO MOLECULE VALUES (2, 'X', ' BaFe0.5Nb0.5O3')"); 

conn.commit() 

我使用的字符串想它给了我错误:sqlite3.Operational Error: duplicate column name: MOLECULE

+0

检查你的表是否存在。 –

+0

现在它已创建表,但不知道如何看表? –

+0

看到什么意思?转到您的数据库客户端并列出所有表,或进行查询。 –

回答

2

CREATE TABLE声明似乎是问题。定义列时,不需要重复表名。尝试使用这样的:

c.execute("CREATE table MOLECULE (NUMBER INT, NAME TEXT, \"MOLECULAR FORMULA\" TEXT)"); 

我也取代了单引号,你必须与周围逃脱双引号MOLECULAR FORMULA列。双引号是在SQLite中转义名称的标准方式。如果这不起作用,你可以尝试使用下划线作为分隔符,例如MOLECULAR_FORMULA,这将不需要任何转义。

+0

它创造了桌子分子,我怎么看桌子? –

+0

如果表中没有数据,那么没有什么可以看到的。尝试做'SELECT * FROM MOLECULE' ...但是,除非插入数据,否则它可能是空的。用于c.execute中的行的“ –

+0

”(“SELECT * FROM MOLECULE”); 此处打印行syntex错误。 –

相关问题