我遇到了一个我不知道如何解决的问题,我尝试了很多解决方案,但总是遇到操作错误:靠近......
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']
这是数据库中的一个条目。这里的问题是其他条目可以或不具有某个字段的一个或多个值,并且这些字段在其他条目中也不会以相同的顺序显示。
它必须识别数据库表中的每个字段,并将每个值插入到右列中。
答案 0 :(得分:0)
导致错误的问题是您的SQL无效。您要执行的语句是:
INSERT INTO medicines présentation VALUES (?)
您要执行的语句是:
INSERT INTO medicines ("présentation") VALUES (?)
就您的大问题而言,如果同时创建列("présentation")
列表和参数标记列表(?)
并使用它们构建查询,那么大部分都是。
如果某个字段可以为数据库中的每个“条目”提供多个值,则可能需要更改数据库设计以处理该问题。你至少需要弄清楚你想要如何处理这种情况,但这将是另一个问题。