Datenbanken abfragen aber eine nutzen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
genervternewbie
User
Beiträge: 25
Registriert: Samstag 17. November 2018, 18:42

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 ?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
UweDitzel
User
Beiträge: 4
Registriert: Dienstag 12. September 2023, 09:04

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 ? )
Benutzeravatar
grubenfox
User
Beiträge: 454
Registriert: Freitag 2. Dezember 2022, 15:49

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)
Benutzeravatar
__blackjack__
User
Beiträge: 13271
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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.
Please call it what it is: copyright infringement, not piracy. Piracy takes place in international waters, and involves one or more of theft, murder, rape and kidnapping. Making an unauthorized copy of a piece of software is not piracy, it is an infringement of a government-granted monopoly.
UweDitzel
User
Beiträge: 4
Registriert: Dienstag 12. September 2023, 09:04

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
Antworten