Seite 1 von 1

Datenbanken abfragen aber eine nutzen

Verfasst: Sonntag 10. September 2023, 13:11
von genervternewbie
Ich suche nach einer möglichkeit um Datenbanken abzufragen, wenn DB1 nicht da dann DB2, wenn auch DB2 nicht dann localhost
Hier was ich mir vorstelle

Code: Alles auswählen

db1 = MySQLdb.connect(host = "192.168.1.26",
                        user = "user",
                        passwd = "passwd",
                        db = "zoo")
                        
cur1 = db1.cursor()
z= cur1.execute("SELECT * FROM zoo")

db2 = MySQLdb.connect(host = "192.168.1.28",
                        user = "user",
                        passwd = "passwd",
                        db = "zoo")                       

cur2 = db2.cursor()
y= cur2.execute("SELECT * FROM zoo")

CREATE TABLE IF NOT EXISTS `logo` (
`id` int(255) unsigned NOT NULL COMMENT 'ID',
`db` varchar(255) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

INSERT INTO `logo` (`db`) VALUES ('1f4ca71c5b3b2be902a5ed34e61ec4d7');

ALTER TABLE `logo` ADD PRIMARY KEY (`id`);

ALTER TABLE `logo` MODIFY `id` int(255) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',AUTO_INCREMENT=2;      
                                 
Der Tabellen eintrag ist nur zu Abfrage gedacht

Hier wie ich am Script denke

Code: Alles auswählen

...
if z == 1:
    db = MySQLdb.connect(host = "192.168.1.26", user = "user", passwd = "passwd", db = "zoo")
elif y == 1:
    db = MySQLdb.connect(host = "192.168.1.28", user = "user", passwd = "passwd", db = "zoo")
else:
    db = MySQLdb.connect(host = "localhost", user = "user", passwd = "passwd", db = "zoo")
...
...
print ("Hugo will Bier")
...
Ist es überhaupt so möglich was ich da so denke ?
Bzw kann ich wie oben am Anfang weiter schreiben oder muß ich den abstand halten ?

Re: Datenbanken abfragen aber eine nutzen

Verfasst: Sonntag 10. September 2023, 13:22
von __deets__
Da waren wir doch schon mal vor 1.5 Jahren. viewtopic.php?p=401104#p401104 - der Ansatz hat sich auch seitdem nicht geändert, macht man immer noch so.

Edit: der Link war irgendwie Gurke, jetzt stimmt er.

Re: Datenbanken abfragen aber eine nutzen

Verfasst: Dienstag 12. September 2023, 09:57
von UweDitzel
Hallo hier mein Büro Konto:
vor 1 Jahren habe ich alles auf gegeben weil kurz darauf alle ergebnisse weg waren wegen Festplattencrash.
Das mit den vielen Datenbanken habe ich jetz auch wieder über Board geworfen. Nach weiteern überlegungen muß ich ganz neu alles planen.

Code: Alles auswählen

#!/usr/bin/env python3
from RPi import GPIO
import mysql.connector
import mysql.connector.errors
from contextlib import closing

but1 = 19
ton = 26

def read()
    ### Code um reader ab zu fragen
    reader = SimpleMFRC522()  
    try:  
        id, text = reader.read() 
        print(id)  
        print(text)  
    finally:  
        GPIO.cleanup() 

def intdb1():
    mydb = mysql.connector.connect(
      host="localhost",
      user="pi",
      password="raspberry",
      database="svwi"
    )
return mydb

def intbl1_database(mydb):
    with closing(mydb.cursor()) as cursor:
        cursor.execute("INSERT INTO tbl1 (ftbl1) VALUES (%s)",["1",])
            mydb.commit()
            return "Eintrag"

ef intbl2_database(mydb):
    with closing(mydb.cursor()) as cursor:
        cursor.execute("INSERT INTO tbl2 (ftbl2)) VALUES (%s)",["1",])
            mydb.commit()
            return "Eintrag"

def main():
    if but1.is_pressed:
        ### führe hier ein Code aus wenn Button gedrückt ist
        mydb = intdb1()
        read()
        ### Habe ich hier die ID noch ?
        Falls Ja dann weiter
        result = intbl2_database(mydb)
    elif but2.is_pressed:
        ### führe hier ein Code aus wenn Button gedrückt ist
        mydb = intdb1()
        read()
        ### Habe ich hier die ID noch ?
        Falls Ja dann weiter
    else:
        ### sonst führe diesen Code aus
        mydb = int1()
        read()
        ### Habe ich hier die ID noch ?
        Falls Ja dann weiter
        result = intbl1_database(mydb)

if __name__ == "__main__":
    main()

ich denke das ich so ein gute Lösung gefunden habe und bei bedarf dann das richtige machen kann
Meine fragen sind im Code ( alles mit ? )

Re: Datenbanken abfragen aber eine nutzen

Verfasst: Dienstag 12. September 2023, 10:47
von grubenfox
Welche ID? Die lokale id in read() kann es ja nicht sein, die ist ja nur innerhalb von read bekannt weil sie nirgendwo nach draußen zurückgegeben wird (und sie hat eine andere Groß-/Kleinschreibung)

Re: Datenbanken abfragen aber eine nutzen

Verfasst: Dienstag 12. September 2023, 11:04
von __blackjack__
@UweDitzel: Der Code kompiliert nicht mal. Und man muss da *mehrere* Stellen ändern damit er das tut. Und dann funktioniert er nicht. Weil voller Fehler.

Bitte echten Code zeigen, der auch mal ausprobiert wurde. Und ohne so kryptische, nummerierte Namen. Die Fragen, wobei es ja eigentlich nur eine ist, beantwortet sich auch von selbst wenn man das ausführen würde.

Edit: `id` ist der Name einer eingebauten Funktion, den sollte man nicht an einen anderen Wert binden.

Re: Datenbanken abfragen aber eine nutzen

Verfasst: Dienstag 12. September 2023, 19:04
von UweDitzel
ich habe nach den test auf alten gerät umstellen wollen auf das neue
und sie da nichts geht mehr
was zu folge hat alles wieder löschenund erst mal was anderes machen
danke viel mals