2016-10-13 11 views
0

解決方法はわからないが、私は多くの解決策を試したが、常にそれを得ている操作エラー:python/sqlite3で列名を認識してデータベースにデータを挿入

def insert_medicine_to_table(): 
     con = sqlite3.connect('med_db3.db') 
     cur = con.cursor() 
     table_name = 'medicines' 
     column_name = "présentation" 
     value = 'Boîte de 2 seringues pré-remplies' 
     cur.execute("INSERT INTO medicines {} VALUES (?)".format(column_name), value) 
     con.commit() 
     con.close() 


sqlite3.OperationalError: near "présentation": syntax error 

ここでの目標は、スクリプトやPythonのどちらかは、フィールド(列名)を認識し、以下のようなフィールド、「こと」に値を挿入しなければならないことである。

fields = ['présentation', 'princeps', 'distributeur_ou_fabriquant', 'composition', 'famille', 'code_atc', 'ppv', 'prix_hospitalier', 'remboursement', 'base_de_remboursement__ppv', 'nature_du_produit'] 
values = ['Boîte de 2 seringues pré-remplies', 'Oui', 'SANOFI', 'Héparine', 'Anticoagulant héparinique', 'B01AB01', '43.80', '27.40', 'Oui', '43.80', 'Médicament'] 

1つのエントリであることデータベースに格納されます。ここで問題となるのは、他のエントリには、あるフィールドに対して1つ以上の値を持たせることもできないことと、他のエントリで同じ順序でフィールドを表示しないことです。

データベーステーブルの各フィールドを認識し、各値を右側の列に挿入する必要があります。

答えて

0

エラーが発生する問題は、SQLが有効でないことです。あなたが実行しようとしている文は次のとおりです。

INSERT INTO medicines présentation VALUES (?) 

実行したい文は次のとおりです。

INSERT INTO medicines ("présentation") VALUES (?) 

限り、あなたの大きな問題が関係しているとして、あなたが列("présentation")のリストの両方を作成した場合と、パラメータマーカーのリスト(?)を使用してそれらを使用してクエリをビルドすると、あなたはそこにあるのです。

データベースの各「エントリ」にフィールドに複数の値を指定できる場合は、データベース設計を変更してそれを処理する必要があります。あなたは、状況をどのように処理したいのかを少なくとも把握する必要がありますが、それは別の質問の問題になります。

+0

私は問題を解決しましたが、リストを辞書に圧縮して解決しました –

関連する問題