Mysql CREATE TABLE funktioniert nicht

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
kiaralle
User
Beiträge: 148
Registriert: Donnerstag 19. August 2021, 19:11

Hi,
ich benötige mal eure Hilfe.
Beim unten aufgeführten Code, bekomme ich immer eine Fehlermeldung.
Kann mich mal einer mit der Nase drauf tippen woran das liegt?
Wenn ich die anzulegenden Felder nicht untereinander stelle, es sind ca. 100, funktioniert das.

Gruß Ralf.
File <unknown>:28
statement ="CREATE TABLE master_register
^
SyntaxError: unterminated string literal (detected at line 28)

Code: Alles auswählen

# Datenbankerstellen
cursor = connection.cursor()
statement ="CREATE TABLE master_register
(
Status int(6),
Vpv1 int(6),
Vpv2 int(6),
Ppv1H int(6),
Ppv1L int(6),
Ppv2H int(6),
Ppv2L int(6),
Buck1Curr int(6),
Buck2Curr int(6),
OP_WattH int(6),
OP_WattL int(6),
OP_VAH int(6),
OP_VAL int(6)
);"
cursor.execute(statement)
connection.commit()
Sirius3
User
Beiträge: 18309
Registriert: Sonntag 21. Oktober 2012, 17:20

Eine String der mit " eingefasst ist, darf keinen Zeilenumbruch enthalten. Dafür gibt es Strings die in """ eingefasst werden.
Übrigens sollten auch Feldnamen in Datenbanken sprechend benannt sein, Vpv1 oder OP_VAH und all die anderen, sind das nicht.
Benutzeravatar
__blackjack__
User
Beiträge: 14184
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Und kann es sein, dass da eine ID fehlt?
“Every thinking person fears nuclear war and every technological nation plans for it. Everyone knows
it's madness, and every country has an excuse.” — Carl Sagan, Cosmos, Episode 13: Who Speaks for Earth?
kiaralle
User
Beiträge: 148
Registriert: Donnerstag 19. August 2021, 19:11

Hi an alle,

Der Tipp mit den """ wegen Zeilenumbruch war richtig :-)
Die Feldnamen ändere ich ab.
phpmyadmin hätte damit keine Probleme.

Gruß Ralf
oldboyJR
User
Beiträge: 69
Registriert: Donnerstag 28. März 2024, 16:19

Wenn man etwas schon createt hat dann kann man es nicht nochmal. Vergewissere dich das es nicht vorhanden ist.
Benutzeravatar
sparrow
User
Beiträge: 4577
Registriert: Freitag 17. April 2009, 10:28

@oldboyJR: Das hat nichts mit dem Problem hier zu tun.
oldboyJR
User
Beiträge: 69
Registriert: Donnerstag 28. März 2024, 16:19

Da fehlt was
vergleiche mit

Code: Alles auswählen

def tabelle_erzeugen():# dieser schritt kann nur einmal pro Datenbank ausgefürt
#werden ansonsten bekommt man nur Fehlermeldungen
    db = mysql.connector.connect(
        host="localhost",
        user="root",
        password="",
        database="Boomer_obj",
        port="3306")
    cursor = db.cursor()
    # Tabelle 'benutzer' erzeugen
    sqlStmt = "CREATE TABLE benutzer (" \
        "id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY," \
        "vorname VARCHAR(30) NOT NULL," \
        "nachname VARCHAR(30) NOT NULL" \
        ")"
    cursor.execute(sqlStmt)
    for tbl in cursor:
            print(tbl)
Antworten