Seite 1 von 1

MySQLdb hilfe bei User Input

Verfasst: Donnerstag 15. Februar 2018, 15:09
von Tom12
Hallo ich komme wieder mal nicht mehr weiter.
Ich habe eine Datenbank auf einem Webserver (MySQL) und möchte diese nun mit einem Pyhton script verbinden,
sodass ich Daten abfragen und hinzufügen kann.
Ich nutze das Modul MySQLdb aber mein Code funktioniert nicht und ich weiß nicht wieso.
Bitte um hilfe
Bisheriger Code:

import MySQLdb
import sys

try:
conn = MySQLdb.connect("localhost", "root", "", "nachrichten")
except:
prnt("Keine Verbindung zum Server möglich")

cur = conn.cursor()
eingabe = input()
#staff_first=raw_input("Whats your message ?")

cur.execute = ("INSERT INTO news (neues) VALUES(`" + eingabe + "`)")


er baut die Verbindung auf aber irgendetwas stimmt mit dem teil hinter VALUES nicht.

Re: MySQLdb hilfe bei User Input

Verfasst: Donnerstag 15. Februar 2018, 15:54
von noisefloor
Hallo,

so funktioniert das auch nicht. Du musst den Wert, den du Einfügen willst, dem SQL-Query als Parameter mitgeben und _nicht_ selber den String zusammenstückeln. Da die offizielle MySQDB Doku nicht erreichtbar ist (was BTW schon mal stark gegen das MySQLDB Modul spricht), hier ein Link auf eine alternative Doku: https://www.tutorialspoint.com/python/p ... access.htm

Fehler Nr 2: keinen Spaghetticode schreiben und den User Input mit dem Code für den DB Zugriff mischen. Kapsle das ganze sinnvoll aufgeteilt in Funktionen.

Und keine nackten try...except verwenden. Damit fängst du _alle_ Fehler ab, auch Programmierfehler. Fehler fängt man gezielt ab.

Und wenn du schon einen Webserver hast - warum bastelst du dir nicht ein HTML-basiertes Frontend, um Daten in die DB zu schreiben? So oder so solltest du die Daten auch validieren, bevor du "irgendwas" in die DB schreibst.

Gruß, noisefloor

Re: MySQLdb hilfe bei User Input

Verfasst: Donnerstag 15. Februar 2018, 17:08
von Tom12
Hallo noisefloor,
Dieses Script ist praktisch mein "Testgebiet" also ist mir vorerst der Spaghetticode egal.
Wie soll ich der SQL-Query den Input als Parameter mitgeben ?
bin noch neu in der Programmierung und Python ist meine erste Sprache die ich lerne deshalb beschränkt sich mein HTML wissen auch noch
auf "Wie gestalte ich eine Webseite"

MfG tom

Re: MySQLdb hilfe bei User Input

Verfasst: Donnerstag 15. Februar 2018, 17:22
von __deets__
execute ist eine *Methode*. Die rufst du auf, so wie du ja auch cursor() aufgerufen hast. Du versuchst aber, execute einen Ausdruck zuzuweisen. Das hilft halt nicht.

Re: MySQLdb hilfe bei User Input

Verfasst: Donnerstag 15. Februar 2018, 17:24
von noisefloor
Hallo,
Dieses Script ist praktisch mein "Testgebiet" also ist mir vorerst der Spaghetticode egal.
Schlechter Programmierstil ist nie egal, auch nicht beim Hausgebrauch.
Wie soll ich der SQL-Query den Input als Parameter mitgeben ?
Das ist in Anleitung erklärt, die ich im vorherigen Post verlinkt habe... Musste halt mal ganz lesen.

Gruß, noisefloor

Re: MySQLdb hilfe bei User Input

Verfasst: Samstag 4. August 2018, 12:10
von __blackjack__
I don't use the MySQL connector because official and Oracle doesn't necessarily mean it's the best, or even good. SQLAlchemy discourages its use: http://docs.sqlalchemy.org/en/latest/di ... ent-issues

Regarding the source code you gave: Under which circumstances does `connection.is_connected()` return `False` right after a successful `connect()` call?

`record` isn't a good name for a sequence of records — plural.

Edit: `is_connected()` isn't portable BTW — it's not part of the DB API V2.