Ich bin kein Datenbankspezialist, ich kenne nur die Grundlagen, wirklich. Ich habe SQLAlchemy für ein kleines Projekt in die Hand genommen und verwende die deklarative Basiskonfiguration anstelle des "normalen" Weges. Dieser Weg scheint viel einfacher zu sein.
Beim Einrichten meines Datenbankschemas habe ich jedoch festgestellt, dass ich einige Konzepte für Datenbankbeziehungen nicht verstehe.
Wenn ich eine viele-zu-eins-Beziehung hätte, z. B. vor Artikeln von Autoren (wobei jeder Artikel nur von einem einzigen Autor geschrieben werden könnte), würde ich ein author_id
Feld in meinem articles
Spalte. Aber SQLAlchemy hat dieses ForeignKey-Objekt und eine Beziehungsfunktion mit einem backref kwarg, und ich habe keine Ahnung, was das alles bedeutet.
Ich habe Angst davor, herauszufinden, wie eine Many-to-Many-Beziehung mit einer Zwischentabelle aussieht (wenn ich zusätzliche Daten über jede Beziehung benötige).
Kann mir jemand das entmystifizieren? Gerade jetzt bin ich einrichten, um openID auth für meine Anwendung zu ermöglichen. Also habe ich dies:
from __init__ import Base
from sqlalchemy.schema import Column
from sqlalchemy.types import Integer, String
class Users(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
username = Column(String, unique=True)
email = Column(String)
password = Column(String)
salt = Column(String)
class OpenID(Base):
__tablename__ = 'openid'
url = Column(String, primary_key=True)
user_id = #?
Ich denke, die ?
sollte ersetzt werden durch Column(Integer, ForeignKey('users.id'))
aber ich bin mir nicht sicher - und muss ich die openids = relationship("OpenID", backref="users")
in der Klasse Benutzer? Wozu? Was macht sie? Was ist ein backref?