2017-06-14 65 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錯誤。 –

相關問題