Ondersteuning > Programmeren

python3 en SQLite probleempje

(1/1)

BaukeP:
Hallo dames en heren,
Ik heb de volgende regel in mijn python code, en dat werkt:
c.execute("INSERT OR REPLACE INTO coins1hr(datum, tijd, naam, O, H, L, C, usdeur) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", (list[0], list[1], list[2], list[3], list[4], list[5], list[6], list[7]))

Maar ik wil een variabele gebruiken voor de tabelnaam (coins1hr wordt dan db3table). Ik lees in de sqlite docs dat dat een vraagteken en een tuple zou moeten. Dus zo ongeveer:
 c.execute("INSERT OR REPLACE INTO ?(datum, tijd, naam, O, H, L, C, usdeur) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", (list[0], list[1], list[2], list[3], list[4], list[5], list[6], list[7]), (db3table,))

Bij het uitvoeren krijg ik de volgende melding:
c.execute("INSERT OR REPLACE INTO ?(datum, tijd, naam, O, H, L, C, usdeur) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", (list[0], list[1], list[2], list[3], list[4], list[5], list[6], list[7]), (db3table,))
TypeError: execute expected at most 2 arguments, got 3

Ik heb geprobeerd het laatste stukje te verplaatsen, maar dat geeft geen oplossing.

Wie is hier mee bekend en kan mij helpen?
Alvast bedankt
Bauke

erik1984:
Je kan denk ik geen parameter gebruiken voor een tabelnaam in SQLite. Zie: https://stackoverflow.com/a/39196510

Misschien is dat dan iets om in de zelf in de querytekst in de te vullen met string formatting. Ideaal gezien doe je in SQL zoveel mogelijk met parameters en zo weinig mogelijk door met strings te rommelen maar soms kan het niet anders.

erik1984:
Dit bedoel ik met formatting trouwens (heb voor de leesbaarheid de query en c.execute gesplitst):

--- Code: ---tabelnaam = "coins1hr"
query = f"INSERT OR REPLACE INTO {tabelnaam} (datum, tijd, naam, O, H, L, C, usdeur) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"
c.execute(query, (list[0], list[1], list[2], list[3], list[4], list[5], list[6], list[7]))

--- Einde van code ---

Bovenstaande lijkt me makkelijk om te bouwen in een loopje met meerdere tabelnamen.

BaukeP:
Erik, dankjewel. Hier ben ik weer mee geholpen!
Bauke

Navigatie

[0] Berichtenindex

Naar de volledige versie