Python 'series' cannot be converted to a MySQL type

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Tom12
User
Beiträge: 48
Registriert: Mittwoch 17. Januar 2018, 17:38

Hallo zusammen,

ich bekomme folgende Meldung finde aber den Fehler nicht...

Code: Alles auswählen

raise errors.ProgrammingError(
mysql.connector.errors.ProgrammingError: Failed processing format-parameters; Python 'series' cannot be converted to a MySQL type
Mein Code:

Code: Alles auswählen

import finanzen_fundamentals.stocks as ff
import mysql.connector
import pandas as pd

mydb = mysql.connector.connect( host="localhost", user="USER", password="PASSWORD", database="stockdata")
mycursor = mydb.cursor()
mycursor.execute("select * from url_name")
record = mycursor.fetchall()

sql = "INSERT INTO stock_price (NAME, WKN, ISIN, TIME, PRICE, CURRENCY, EXCHANGE) VALUES (%s, %s, %s, %s, %s, %s, %s)"

for row in record:
    try:
        df = ff.get_current_value_lxml(str(row[2])[:-1], exchange = "FSE")
        val = (df["name"], df["wkn"], df["isin"], df["time"], df["price"], df["currency"], df["exchange"])
        print(val)
        mycursor.execute(sql, val)
        mydb.commit()
        print("Insertet: " + str(df["name"]))
    except Exception as e:
        print("Error at stock: " + str(row[2]))
        print(str(e))
val hat Beispiel Inhalt:
(0 BMW Aktie
Name: name, dtype: object, 0 519000
Name: wkn, dtype: object, 0 DE0005190003
Name: isin, dtype: object, 0 16.10.2020
Name: time, dtype: object, 0 62.84
Name: price, dtype: float64, 0 EUR
Name: currency, dtype: object, 0 Stuttgard
Name: exchange, dtype: object)

ist es ein fehler wegem diesem 0 als Index, der Rest würde ja passen...

Gruß
Tom
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Lass dir doch mal anzeigen, welchen Python-Type die einzelnen Elemente haben, die du da in einen Tuple namens val packst.
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

Mit series-Objekten kann halt MySQL nichts anfangen.
Wie sieht denn die Funktion get_current_value_lxml aus?
Man benutzt keine *-Select, vor allem nicht, wenn man nur das dritte Feld braucht.
Bei mydb oder mycursor ist das my überflüssig, so lange es kein yourdb gibt.
Antworten