通过识别列名称,使用python / sqlite3将数据插入数据库

时间:2016-10-13 00:14:13

标签: python-3.x sqlite

我遇到了一个我不知道如何解决的问题,我尝试了很多解决方案,但总是遇到操作错误:靠近......

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 个答案:

答案 0 :(得分:0)

导致错误的问题是您的SQL无效。您要执行的语句是:

INSERT INTO medicines présentation VALUES (?)

您要执行的语句是:

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

就您的大问题而言,如果同时创建列("présentation")列表和参数标记列表(?)并使用它们构建查询,那么大部分都是。

如果某个字段可以为数据库中的每个“条目”提供多个值,则可能需要更改数据库设计以处理该问题。你至少需要弄清楚你想要如何处理这种情况,但这将是另一个问题。