sqlalchemy anfänger problem

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
thedafelix
User
Beiträge: 8
Registriert: Mittwoch 21. Dezember 2011, 20:00

Hi,

bin zurzeit am rumspielen mit SQLAlchemy. Hab mich in des Tutorial auf der SQLAlchemy Seite reingelesen und wollte jetzt erstmal in der IDLE anfangen nen bisschen mehr zu üben. Also -> einfache Kontaktverwaltung oder so in die Richtung. Hab schön die Tabellen erstellt, funktioniert auch alles während der laufzeit des Programmes am Datenbankserver oder SQLite Datei kommt jedoch GAR nichts an. Woran könnte des liegen??? Bin iwie verwirrt nach schneller Google suche hat anscheinend sonst anscheinend niemand dieses prob, hab jedenfalls nichts gefunden. Ich erstelle meine Engine und Session so:

Code: Alles auswählen

engine = create_engine("mysql://user:passwort@localhost/db",echo=True)
Session = sessionmaker(bind=engine)
session = Session()
Base = declarative_base()
Base.metadata.bind = engine
Tabellen sind erstellt und auch richtig im DB-Server angelegt, hatte vorher ein "Base.metadata.create_all(engine)" nach den Tabellen Definitionen.

Sitz' ich grad voll auf der leitung???

Danke schonmal

thedafelix
deets

Das ist ja nix, was ein statement gegen die DB absetzt - was erwartest du dann?

Und dass Session.add() sowie Session.commit() aufgerufen werden muessen ist dir bewusst?
thedafelix
User
Beiträge: 8
Registriert: Mittwoch 21. Dezember 2011, 20:00

Tut mir leid, wollte gerade noch hinzufügen dass ich mir durchaus bewusst bin dass ich session.add(object) und danach session.flush() aufrufen muss, bzw ne query ausführen. Hier mal der Komplette Code

Code: Alles auswählen

engine = create_engine("mysql://user:pw@localhost/db",echo=True)
Session = sessionmaker(bind=engine)
session = Session()
Base = declarative_base()
Base.metadata.bind = engine
#Connection Tables
user_group_association = Table("user_group",Base.metadata,
                         Column("userId",Integer,ForeignKey("users.userId")),
                         Column("groupId",Integer,ForeignKey("groups.groupId"))
                        )

#Main Tables
class User(Base):
    __tablename__ = "users"
    userId = Column(Integer,primary_key=True)
    firstName = Column(String(30))
    lastName = Column(String(40))
    email = Column(String(45))
    groups = relationship("Group",secondary=user_group_association,backref="members")

    def __init__(self,firstName,lastName,email):
        self.firstName = firstName
        self.lastName = lastName
        self.email = email
    
class Group(Base):
    __tablename__ = "groups"
    groupId = Column(Integer,primary_key=True)
    groupName = Column(String(30))

    def __init__(self,groupName):
        self.groupName = groupName
Base.metadata.create_all(bind=engine)
und die Teile in denen ein Objekt hinzugefügt wird

Code: Alles auswählen

new_user = User(firstName,lastName,email)
session.add(new_user)
session.flush()
thedafelix
User
Beiträge: 8
Registriert: Mittwoch 21. Dezember 2011, 20:00

NEEEIN, session.commit() hat geholfen, ich idiot. Tut mir echt leid, war iwie voll auf session.flush() fixiert - dachte iwie des auf auf SQLAlchemy.com gelesen zu haben. Sorry :oops:
Danke!!! thedafelix
Antworten