- CREATE DATABASE
- CREATE TABLE
- ALTER TABLE
- INSERT INTO TABLE
Ausgang ist eine Liste, die ich jederzeit erweitern kann und mein Code sich entsprechend anpassen soll, ohne an mehreren Stellen manuell was ändern zu müssen. Theoretisch funktioniert das auch. Nur mein cursor.execute macht Probleme. Mit dem Cursor.execute als Kommentar funktioniert es einwandfrei. Nur sind dann meine Werte nicht "parametrisch":
Code: Alles auswählen
#!/usr/bin/python
import mysql.connector as mariadb
import datetime
import time
import requests
DB_server = '123.456.789.123'
DB_user = 'user'
DB_passwort = 'passwort'
DB_name = 'Datenbank'
TAB_name= 'Tabelle'
liste = ["Name1", "Name2", "Name3"] #, "Name4","Name5","Name6"] # soll nach und nach ergänzt werden
url = "https://eine.url/mit/daten/"
def verbinden():
con = mariadb.connect(
host=DB_server,
user=DB_user,
passwd=DB_passwort,
)
return con
def DB_erstellen(cursor):
anfang= "CREATE TABLE IF NOT EXISTS " +TAB_name +"(id int(11) NOT NULL AUTO_INCREMENT, Datum datetime NOT NULL, PRIMARY KEY (id))"
cursor.execute("CREATE DATABASE IF NOT EXISTS {} DEFAULT CHARACTER SET 'utf8'".format(DB_name))
cursor.execute("USE {}".format(DB_name))
cursor.execute(anfang)
print anfang
def alter_table(cursor):
i=0
zeichen=""
while i < len(liste):
zeichen = ("ALTER TABLE " +TAB_name +" ADD COLUMN IF NOT EXISTS " +liste[i] +" int NOT NULL;")
i += 1
print zeichen
cursor.execute("USE {}".format(DB_name))
cursor.execute(zeichen)
def befuellen(cursor,TAB_name,con):
datum=datetime.datetime.now().replace(microsecond=0)
werte=[]
z=0
value=""
i = 0
zeichen= ""
format=""
for i in liste:
r = requests.get(url+str(i))
text=r.text
abfrage=text.isdecimal()
if abfrage:
zahl=int(text)
werte.append(zahl)
value += (",werte["+str(z)+"]")
zeichen += (","+liste[z])
format +=",%s"
else:
werte.append(0)
value += (",werte["+str(z)+"]")
zeichen += (","+liste[z])
format +=",%s"
sql = "INSERT INTO "+TAB_name+" (Datum" +zeichen+") VALUES (%s"+format+")"
val = "(datum"+value+")"
cursor.execute (sql, val)
########## so geht es
## cursor.execute(sql, (datum,werte[0],werte[1],werte[2]))
con.commit()
def main():
con=verbinden()
alter_table(cursor)
befuellen(cursor,TAB_name,con)
cursor.close()
con.close()
con.disconnect()
main()
