Schnellster Weg eine Datenbank upzudaten?

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.
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@DMD-OL: als Primärschlüssel hast Du ja ID. Und ob die Artikelnummer unique ist oder nicht, weißt nur Du. Ein »CREATE INDEX« reicht auch schon, um Abfragen zu beschleunigen.
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

@sirius: wäre es denn besser die artikelnummer den primärschlüssel zu geben und die id ganz weg, die brauch ich nämlich eigentlich gar nicht?
das wichtigste ist einfach die artikelnummer.

Code: Alles auswählen

    def create_product(self):
        self.cursor.execute("CREATE TABLE IF NOT EXISTS A_Hauptsatz_1("
                            "Satzartkennung TEXT,"
                            " Verarbeitungskennung TEXT,"
                            " Artikelnummer TEXT PRIMARY KEY,"
                            " Textkennung TEXT,"
                            " Artikelbezeichung_1 TEXT,"
                            " Artikelbezeichung_2 TEXT,"
                            " Preiskennung INTEGER,"
                            " Preiseinheit INTEGER,"
                            " Mengeneinheit TEXT,"
                            " Preis INTEGER,"
                            " Rabattgruppe TEXT,"
                            " Hauptwarengruppe TEXT,"
                            " Langtextschluessel TEXT,"
                            " Leer_1 TEXT"
                            ")")
ist das so möglich und auch "100 x" schneller?
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

Wenn die Artikelnummer eindeutig ist, dann braucht es keine zusätzliche ID. Es kann aber auch Sinn machen, falls die Artikelnummer ein unhandlicher String ist.
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

hi
vielen dank für deine hilfe.
ich habe es jetzt so und es läuft sehr gut UND WIRKLICH SCHNELL :)

Code: Alles auswählen

    def create_product(self):
        self.cursor.execute("CREATE TABLE IF NOT EXISTS " + self.table_name_a +
                            "(ID INTEGER PRIMARY KEY, "
                            "Satzartkennung TEXT, "
                            "Verarbeitungskennung TEXT, "
                            "Artikelnummer TEXT UNIQUE, "
                            "Textkennung TEXT, "
                            "Artikelbezeichung_1 TEXT, "
                            "Artikelbezeichung_2 TEXT, "
                            "Preiskennung INTEGER, "
                            "Preiseinheit INTEGER, "
                            "Mengeneinheit TEXT, "
                            "Preis INTEGER, "
                            "Rabattgruppe TEXT, "
                            "Hauptwarengruppe TEXT, "
                            "Langtextschluessel TEXT, "
                            "Leer_1 TEXT"
                            ")"
                            )
DANKE AN ALLE
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@DMD-OL: hat Dir eigentlich schonmal jemand gesagt, dass Tabellennamen fix sein sollten und nicht durch irgendwelche Variablen festgelegt? Warum ist Preis ein INTEGER? Rechnest Du in Pfennig?
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

@Sirius3 Preise als Ganzzahlen ist durchaus ueblich um sich gegen Rundungsfehler zu wappnen.
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@__deets__: üblich ist, DECIMAL zu benutzen.
Benutzeravatar
__blackjack__
User
Beiträge: 13103
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@__deets__: Dafür haben Datenbanken DECIMAL und Python ja auch als `decimal.Decimal`. :-) Und SQLAlchemy bildet das auch so aufeinander ab.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

*Manche* Datenbanken haben das. SQLite zB AFAIK nicht.
Benutzeravatar
__blackjack__
User
Beiträge: 13103
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@__deets__: Man kann bei SQLite DECIMAL deklarieren und SQLAlchemy bildet das auch auf `decimal.Decimal` ab. Solange man also nicht *in* der Datenbank rechnen will, sondern die nur zum speichern verwendet, geht das auch mit SQLite.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten