Warum braucht es SQLAlchemy?

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Sirius3 hat geschrieben:@meego: Du hast in Deinem Design nicht vorgesehen, dass sich der Hash-Algorithmus ändern kann. Vielleicht gibt es andere Algorithmen, die andere Parameter brauchen. Kurz, Dein Design ist unnötig kompliziert und unflexibel.
@sirius: Okay. Hier einmal ein Update:

Code: Alles auswählen

class Member(Base):
	__tablename__ = 'member'
	#Columns for the table user
	id = Column(Integer, primary_key=True)
	first_name = Column(String(80))
	last_name = Column(String(80))
	email = Column(String(255), index=True)
	street = Column(String(80))
	plz = Column(String(40))
	city = Column(String(80))
	password_salt_hash = Column(String(500))
	selfdescription = Column(String(500))
	verified = Column(Boolean)
	created = Column(TIMESTAMP)
	deleted = Column(TIMESTAMP)
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

meego hat geschrieben:...
Da fehlt mir der kryptographische Kennerblick. :mrgreen:
Aber warum müssten die Benutzer bei zwei Feldern das Passwort neu eingeben?
Wenn Du Dich damit nicht auskennst, spricht das ganz stark dafür, was Fertiges zu nehmen. Das Problem ist schon zigmal vor Dir gelöst und auf Fehler abgeklopft worden, z.B. in Django ;)

Wie man Relationen und deren Rückbindungen erstellt, findest Du in der SQLAlchemy-Dokumentation http://docs.sqlalchemy.org/en/rel_1_0/o ... ne-to-many
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

jerch hat geschrieben:Wenn Du Dich damit nicht auskennst, spricht das ganz stark dafür, was Fertiges zu nehmen. Das Problem ist schon zigmal vor Dir gelöst und auf Fehler abgeklopft worden, z.B. in Django ;)
Was ist "was Fertiges"? Eine Bibliothek?
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
meego hat geschrieben:Was ist "was Fertiges"? Eine Bibliothek?
Ja - bzw. ein fertiges Framework wie Django. Das hat die Benutzerverwaltung inkl. Gruppen, zugehöriger Methoden und Dekoratoren bereits an Bord. Und das ganze dann auch noch integriert mit einem ORM, Template Engine, Form Framework, URL-Routing usw usw

Gruß, noisefloor
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Aber ich denke, erst muss einmal das Datenbankdesign stehen.
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@meego: Django hat schon eine Nutzerverwaltung integriert. Da müßtest Du also die User-Tabelle nur noch um die Felder erweitern, die Deine Member-Tabelle zusätzlich hat.
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Sirius3: Hm. Und wie binde ich den ganzen Rest der DB an die an? Momentan würde ja nur SQLAlchemy die DB erzeugen.
BlackJack

@meego: Wenn man Django verwendet, dann verwendet man üblicherweise dessen ORM statt SQLAlchemy.
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

@BlackJack: Verstehe. Und was sagen Leute die beide ORMs kennen? Was performt besser? Was ist einfacher?
BlackJack

@meego: Ich würde sagen das Django-ORM ist einfacher, aber dafür halt auch nicht so flexibel. Aber weder das noch die Performance ist hier IMHO die Frage sondern ob man Django nutzen möchte oder nicht, denn wenn man Django nutzt, braucht man IMHO schon einen guten Grund nicht dessen ORM zu verwenden sondern etwas anderes was nicht so gut integriert ist. Django ist ein Gesamtpaket bei dem die einzelnen Teile gut ineinandergreifen. SA würde ich da nur nutzen wenn man bereits eine Datenbankanbindung auf SA-Basis hat und die Portierung scheut, oder wenn man bereits eine Datenbank vorliegen hat die sich mit dem Django-ORM gar nicht oder nur mit Mühe abbilden lässt.
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Ich würde sagen das Django-ORM ist einfacher, aber dafür halt auch nicht so flexibel.
+1

Gruß, noisefloor
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Hallo

Das hier macht etwas Angst:
"wenn man bereits eine Datenbank vorliegen hat die sich mit dem Django-ORM gar nicht oder nur mit Mühe abbilden lässt."

Bzw.: Warum lässt sich nicht jede Dankenbank damit abbilden?

Ich habe auch schon gelesen, web2py und Django seien eigentlich nur für Prototypen geeignet. Aber das Web nimmt alle Meinungen auf. Gibt's denn irgendwelche grossen Seiten die damit gemacht sind?
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
meego hat geschrieben:Das hier macht etwas Angst:
"wenn man bereits eine Datenbank vorliegen hat die sich mit dem Django-ORM gar nicht oder nur mit Mühe abbilden lässt."

Bzw.: Warum lässt sich nicht jede Dankenbank damit abbilden?
Hast du falsch verstanden: SA kennt etwas Namens Reflection, mit dem sich bestehenden Datenbanken "automatisch" ins ORM integrieren lassen. Heißt: gilt für Legacy Datenbanken -> hast du nicht -> für die nicht relevant, der Hinweis war allgemene bzgl. SA vs. Django.

meego hat geschrieben: Ich habe auch schon gelesen, web2py und Django seien eigentlich nur für Prototypen geeignet.
Bezogen auf Django: Bullshit. web2py habe ich selber noch nie genutzt, kann ich nix zu sagen. Was richtig ist: mit Django kann man sehr schnell eine lauffähigen Prototypen einer Webseite herstellen, denn man dann Schritt für Schritt ausbauen kann.

meego hat geschrieben:Aber das Web nimmt alle Meinungen auf. Gibt's denn irgendwelche grossen Seiten die damit gemacht sind?
Anstatt dich auf Webseiten rumzutreiben, die obskure Behauptungen wie die oben aufstellen ;-) solltest du vielleicht mal direkt auf die Django Seite gehen.... Auf https://www.djangoproject.com/start/overview/ ganz unten findest du die Antworten...

Gruß, noisefloor
Zuletzt geändert von cofi am Dienstag 14. Juli 2015, 20:41, insgesamt 1-mal geändert.
Grund: URL markup gefixt
BlackJack

@meego: Datenbanken für das Django-ORM müssen bestimmte Bedingungen erfüllen wie beispielsweise einen Integer-Primärschlüssel pro Tabelle (war zumindest so als ich mich das letzte mal damit beschäftigt habe).

Ab wann ist denn eine Seite ”gross”? Ubuntuusers.de baut auf Django auf. Ansonsten listet das Projekt selbst diese Nutzer: Disqus, Instagram, The Guardian, Knight Foundation, MacArthur Foundation, Mozilla, National Geographic, Open Knowledge Foundation, Pinterest, NASA, Open Stack, Rdio.
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

@BlackJack: Okay. Aber was meint eigentlich "unflexibel" in der Praxis?
BlackJack

@meego: Was meinst Du jetzt mit unflexibel? Das Django-ORM ist nicht unflexibel sondern SA ist sehr flexibel. Das ist ein Unterschied. Und bedeutet das SA sehr viele Ansatzpunkte vorsieht die Abbildung zu konfigurieren, anzupassen, und zu erweitern.
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Hi Blackjack: "Ich würde sagen das Django-ORM ist einfacher, aber dafür halt auch nicht so flexibel." war dein Satz.

Ich habe es mittlerweile geschafft, ein paar Daten mit SQLAlchemy in die DB zu schreiben. Es gäbe auch noch Peewee (das etwas ähnlich wie der einfachere ORM Syntax vom Django ORM ausschaut.)

Bleiben also eigentlich noch User-Authentifizierung, Formulare und Adminpanel . Ich komme wohl nicht darum Django parallell mal auszutesten, obwohl ich langsam das Gefühl habe, mich im Kreis zu drehen.
Zuletzt geändert von meego am Mittwoch 15. Juli 2015, 10:12, insgesamt 1-mal geändert.
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@meego: ich würde Dir stark zu einem Gesamtpaket raten. Gerade bei Userauthentication, Sessionmanagement oder CSFR-Schutz kann man, wenn man sich nicht auskennt, viel falsch machen und damit große Sicherheitslücken produzieren. Die Standardeinstellungen von Django sind da schon relativ gut. Über SQL-Injections brauchst Du Dir keine Sorgen machen, solange Du irgendein ORM benutzt. Javascript- bzw. allgemein HTML-Injection-Lücken stopft man relativ bequem mit irgendeinem Templating-System, wobei man unbedingt die Sicherheitshinweise lesen sollte.
Natürlich gibt es für die kleinen Frameworks für alles Zusatzmodule, bevor Du also anfängst, Dir selbst was zu basteln (wie bei der Nutzerverwaltung), schau Dich erst mal um und mach Dich schlau.
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Okay, das ist wieder ein gutes Argumet. Ein Sicherheitsrisiko will ich nicht werden. Ich werde es mir installieren.

Übrigens. Bei jeder neuen Virtualenvironment dieselbe Fehlermeldung:

Code: Alles auswählen

You are using pip version 6.0.8, however version 7.1.0 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Aber bei meinem lokalen Python ist es uptodate. Ich kanns zwar über den Befehl upgraden, aber warum berücksichtigt virutalenv nicht einfach mein Ubuntu Systempython PIP?
BlackJack

Noch ein Link zum Thema Django und nur für Prototypen geeignet: What is the highest traffic website built on top of Django?
Antworten