2016-10-13 3 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 

여기서의 목표는 스크립트 나 파이썬 중 하나는 필드 (열 이름을) 인식에 값을 삽입 "고"한다는 것이다 필드, 다음과 같은 : 하나 개의 항목입니다

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'] 

데이터베이스에. 여기서 문제는 다른 항목이 일부 필드에 대해 하나 이상의 값을 가질 수 있거나 가질 수 없으며 필드가 다른 항목에서 동일한 순서로 표시되지 않는다는 것입니다.

데이터베이스 테이블의 각 필드를 인식하고 각 값을 오른쪽 열에 삽입해야합니다.

답변

0

오류의 원인은 SQL이 유효하지 않다는 것입니다. 당신이 실행하려고하는 문은 다음과 같습니다

INSERT INTO medicines présentation VALUES (?) 

실행하려는 문은 다음과 같습니다

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

지금까지 당신의 더 큰 문제에 관한 한, 사용자가 만든 두 열 ("présentation")의 목록 경우 매개 변수 마커 (?) 목록을 사용하여 쿼리를 작성하면 대부분의 방법대로 사용할 수 있습니다.

필드에 데이터베이스의 각 "항목"에 대해 여러 개의 값이 제공 될 수있는 경우 데이터베이스 디자인을 변경하여 처리해야 할 수 있습니다. 상황을 어떻게 처리하고 싶은지를 알아 내야 할 필요는 있지만, 그것은 다른 질문에 대한 문제 일 것입니다.

+0

감사합니다.하지만 목록을 사전으로 압축하여 문제를 해결했습니다. –

관련 문제