@sparrow
was möchtest du genau sehen?
ich kann dir sagen das die Tabelle nur eine Spalte hat, nationalität varchar(50)
Keine laufende Nummer oder ähnliches.
Datenbankanbindung Problem
Ok, das was du da tust funktioniert zwar, aber ich glaube das ist Postgres-spezial.
Besser zu lesen und wahrscheinlich weniger fehleranfällig wäre es allerdings wirklich mit executemany. Wenn du mehr mit postgres machen willst, dann solltest du dort einen Blick drauf werfen.
Allerdings habe ich in der Vergangenheit bei sehr, sehr vielen Statements über executemany unter postgres festgestellt, dass das sehr langsam sein kann. Es kann sein, dass der Autor das mit den Prepared Statements nicht so abgebildet hat, dass der Server das als solche abarbeitet.
Besser zu lesen und wahrscheinlich weniger fehleranfällig wäre es allerdings wirklich mit executemany. Wenn du mehr mit postgres machen willst, dann solltest du dort einen Blick drauf werfen.
Allerdings habe ich in der Vergangenheit bei sehr, sehr vielen Statements über executemany unter postgres festgestellt, dass das sehr langsam sein kann. Es kann sein, dass der Autor das mit den Prepared Statements nicht so abgebildet hat, dass der Server das als solche abarbeitet.
Ich bin sonst kein Postgres nutzer und hab es an sich auch nie verwendet aber ich muss damit arbeiten und kenne noch nicht alle Funktionen usw.
Das mit den Nationalitäten hab ich geschrieben und mehrfach probiert, ich hasse es einfach in der Konsole alles einzutippen und wenn da mal ein Fehler
is gehts wieder von vorne los.... war mir auf dauer zu doof.
Hab deswegen mir das kleine Skript geschrieben, Anfang des Jahres war das glaub ich und da war mir "executemany" noch kein begriff, jetzt zwar auch nicht
aber ich schau es mir genauer an.
Das mit den Nationalitäten hab ich geschrieben und mehrfach probiert, ich hasse es einfach in der Konsole alles einzutippen und wenn da mal ein Fehler
is gehts wieder von vorne los.... war mir auf dauer zu doof.
Hab deswegen mir das kleine Skript geschrieben, Anfang des Jahres war das glaub ich und da war mir "executemany" noch kein begriff, jetzt zwar auch nicht
aber ich schau es mir genauer an.
Hier ist die Dokumentation. Damit hast du die Möglichkeit ein Statement zu übergeben und eine Liste der entsprechenden Parameter.
Du machst also ein Insert-Statement mit Platzhalter und als zweiten Parameter eine Liste von Tupeln, die die Platzhalter auffüllen.
Du machst also ein Insert-Statement mit Platzhalter und als zweiten Parameter eine Liste von Tupeln, die die Platzhalter auffüllen.
Zuletzt geändert von sparrow am Donnerstag 3. September 2015, 10:46, insgesamt 1-mal geändert.
@Kalli87: Wie verwendet man eine Tabelle mit Zeichenketten ohne das die eine Spalte mit IDs hat?
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Irgend wie gar nicht (sinnvoll)BlackJack hat geschrieben:@Kalli87: Wie verwendet man eine Tabelle mit Zeichenketten ohne das die eine Spalte mit IDs hat?
Aber wir wissen doch gar nicht, dass die keine ID haben? Kann ja eine automatisch generierte sein!
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
@Hyperion: Doch, wissen wir:
Kalli87 hat geschrieben:ich kann dir sagen das die Tabelle nur eine Spalte hat, nationalität varchar(50)
Keine laufende Nummer oder ähnliches.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Ah... ok! Tja... dann ist das wirklich obskur
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
@Kalli87: Eine Tabelle ohne eine ID-Spalte beziehungsweise ein VARCHAR(50) als Primärschlüssel ist obskur.
Edit: Und das dann auch noch als einige Spalte der Tabelle. Wie setzt man das mit anderen Tabellen in Beziehung?
Edit: Und das dann auch noch als einige Spalte der Tabelle. Wie setzt man das mit anderen Tabellen in Beziehung?
Eigentlich dient die Tabelle nur um die Nationalitäten auszulesen und in ein dropdown menü zu packen.
Und das Dropdownmenü hängt in einem Formular was zum Kunden anlegen gedacht is.
Kundentabelle is extra und dort landet dann auch die nationalität.
Und das Dropdownmenü hängt in einem Formular was zum Kunden anlegen gedacht is.
Kundentabelle is extra und dort landet dann auch die nationalität.
@Kalli87: Was meinst Du mit in der Kundentabelle landet die Nationalität? Etwa auch als VARCHAR(50)? Genau das wäre ja falsch, denn dort sollte die *ID* von der Nationalität landen und nicht kopierte und damit redundante Daten. Das verletzt die Normalform des Schemas.
Zur Initialisierung von Datenbanken verwendet man normalerweise SQL das in *Dateien* steht und nicht live in die Konsole bei einem textbasierten Datenbankclient getippt wird. Das kann man dann bei solchen Clients entweder in den Client pipen oder den Dateinamen als Argument oder Option beim Aufruf angeben. Das wäre dann auch unabhängig von der Programmiersprache die man am Ende verwendet um die Datein aus der Datenbank zu verarbeiten.
Zur Initialisierung von Datenbanken verwendet man normalerweise SQL das in *Dateien* steht und nicht live in die Konsole bei einem textbasierten Datenbankclient getippt wird. Das kann man dann bei solchen Clients entweder in den Client pipen oder den Dateinamen als Argument oder Option beim Aufruf angeben. Das wäre dann auch unabhängig von der Programmiersprache die man am Ende verwendet um die Datein aus der Datenbank zu verarbeiten.
@Kalli87: Als GUI-Programm habe ich schon pgadmin3 verwendet. Und als Weboberfläche Adminer.
@Kalli87: Nun das Thema hatten wir ja schon: PostgreSQL ist da in der Grundeinstellung ziemlich sicher konfiguriert was das Anmelden betrifft. Man muss da schon ziemlich genau konfigurieren welche Nutzer wie und von wo darauf zugreifen können. *Das* sollte man dann aber auch drauf haben wenn man mit PostgreSQL arbeitet.