2017-06-14 16 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"); 行のシンセシスエラーがここに表示されます。 –

関連する問題