2016-10-20 9 views
0

を書いていないコマンドを実行し、それがエラーを思い付くパイソンSQLlite3は値

Traceback (most recent call last): 
    File "G:\documents\GCSE\Computing\Python Files\Databases\Database 1.py", line 15, in <module> 
cursor.execute('''INSERT INTO Orders VALUES (first_name,last_name,number,date,order_value)''') 
sqlite3.OperationalError: no such column: first_name 

以下のとおりであるコード、高く評価されるだろう与えることができる任意のヘルプ; D

cursor.execute('''CREATE TABLE Orders4 (customer_first_name text,customer_second_name text,order_number text,order_date date,order_contents text)''') 
first_name = input("What is the customer's first name: ") 
last_name = input("What is the customer's last name: ") 
number = input("What is the order number: ") 
order_value = input("What is the order: ") 
date = time.strftime("%d/%m/%Y") 
cursor.execute('''INSERT INTO Orders VALUES(first_name,last_name,number,date,order_value)''') 
+1

あなたは 'Orders'としてそれを参照してみてください、その後、' Orders4'テーブルを呼び出してみてください – asongtoruin

答えて

1

コメントで述べたように、あなたのSQL文(受注Orders4)にタイプミスがあります。
しかし、実際の問題は、INSERTコマンド(最後の行)を定義する文字列にあります。 変数first_name,last_nameなどを評価する(つまり、実際の値が文字列で終わる)ようにするには、それに応じて文字列をformatにする必要があります。現在、それらは単純な文字列です。

データベースでINSERTコマンドを実行すると、単語first_nameが表示され、存在しない "first_name"という列への参照として評価されます。あなたが引用希望の場合

ので

cursor.execute('''INSERT INTO Orders VALUES("first_name","last_name","number","date","order_value")''') 

コマンドのような変数が働くだろうが、あなたは、データベース内の行の実際の言葉「FIRST_NAME」で終わるでしょう。上記のリンクの書式文字列について

読むと、あなたはそれを作成する場合は、次の

cursor.execute('''INSERT INTO Orders VALUES({fn},{ln},{nr},{dt},{ov})'''.format(fn=first_name,ln=last_name,nr=number,dt=date,ov=over_value)) 

HTH、デニス