SQL и ALTER и INSERT с тем же заполнителем Python - PullRequest
0 голосов
/ 27 июня 2018

Я хотел бы проанализировать XML-документ с помощью Python и создать из него базу данных (используя sqlite3).

xml.tag создаст строки, xml.text будет данными в строке.

XML (часть):

<intrants>
<PPPs>
<PPP>
<titulaire ref-type="firme-titulaire" ref id="20110427000619000001">DUPONT SOLUTIONS (FRANCE) S.A.S.</titulaire>
<type-produit>PPP</type-produit>
<etat-produit>AUTORISE</etat-produit>
<numero-AMM>9600509</numero-AMM>

код:

import xml.etree.ElementTree as ET
import sqlite3

conn = sqlite3.connect("PPPsdb.sqlite")
cur = conn.cursor()

cur.executescript('''
CREATE TABLE IF NOT EXISTS PPP (
    id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE);
''')

fname = "C:blablabla.xml"

tree = ET.parse(fname)

root = tree.getroot()

all = root.findall('intrants/PPPs/PPP/') 

if one.find(".//") is None :
    if one.find(".").text is not None : print one.find(".").text, len(one.find(".").text)

    try :
        print one.tag.replace("-", "_")
        print one.text

        cur.execute(''' 
            ALTER TABLE PPP ADD COLUMN ''' + (one.tag.replace("-", "_")))


        cur.execute(''' INSERT OR IGNORE INTO PPP (titulaire)
            VALUES ( ? )''', (one.text,))

    except : 
        continue

conn.commit()

Этот код не работает, но работает (без трассировки).

Я бы хотел, чтобы заполнитель присваивал значения как заголовку столбца, так и его собственным данным.

Для получения дополнительной информации, этот код должен запускаться только в том случае, если создаваемый столбец еще не существует (но это не цель этого сообщения).

...