sql >> Database >  >> RDS >> Mysql

Met behulp van Python snel veel kolommen invoegen in Sqlite\Mysql

Met "Nieuwe gegevens is een lijst met x kolommen", neem ik aan dat je x . bedoelt tupels , sindsdien blijf je spreken van "de eerste tuple". Als Newdata is een lijst met tupels, y = len(Newdata[0]) is het aantal items in de eerste van die tuples.

Ervan uitgaande dat dit het gewenste aantal is (en alle tuples kunnen maar beter hetzelfde aantal items hebben, anders executemany zal mislukken!), is het algemene idee in @Nathan's antwoord juist:bouw de string met het juiste aantal door komma's gescheiden vraagtekens:

holders = ','.join('?' * y)

voeg het vervolgens in de rest van de SQL-instructie in. De manier van @Nathan om in te voegen is geschikt voor de meeste Python 2.alle versies, maar als je 2.6 of beter hebt,

sql = 'INSERT INTO testdata VALUES({0})'.format(holders)

heeft momenteel de voorkeur (het werkt ook in Python 3.any).

Eindelijk,

csr.executemany(sql, Newdata)

zal doen wat je wenst. Vergeet niet om de transactie vast te leggen zodra u klaar bent!-)



  1. ALTER TABLE om een ​​samengestelde primaire sleutel toe te voegen

  2. Hoe TimescaleDB gemakkelijk te implementeren?

  3. SELECT van View bevat een subquery in de FROM-component

  4. Waar slaat PostgreSQL configuratie-/conf-bestanden op?