Abstrakte Datenbank mit Sqlalchemy

08/06/2011 - 18:18 von Wolfgang Meiners | Report spam
Hallo Gruppe,

ich versuche eine abstrakte Datenbankklasse unter Python3 zu programmieren:

#! /usr/bin/env python3
# -*- encoding: utf-8 -*-

from sqlalchemy import *
from sqlalchemy.orm import *
from sqlalchemy.orm.session import sessionmaker

class abstractdb:
def __init__(self, dbname):
self.dbname = dbname
self.metadata = MetaData(bind=self.dbname)
self.metadata.create_all(checkfirst=True)
self.Session = sessionmaker()
self.session = self.Session()

self.person_table = Table('tf_person', self.metadata,
Column('id', Integer, primary_key=True),
Column('Name', Unicode(32)),
Column('Vorname', Unicode(31))
)

mapper(self.Person, self.person_table)

class Person:
pass


if __name__ == '__main__':
DB = abstractdb('sqlite:///:memory:')

DB.Person.Name='Müller'
DB.Person.Vorname='Hubert'
DB.session.commit()

for row in DB.session.query(DB.Person).all():
print(row.Name)


Der Code làuft bis zur letzten Anweisung ohne Fehlermeldung durch, ich
bekomme aber keine Ausgabe.

Wie geht das richtig?

Danke für alle Tipps
Wolfgang
 

Lesen sie die antworten

#1 Wolfgang Meiners
08/06/2011 - 19:06 | Warnen spam
Am 08.06.11 18:18, schrieb Wolfgang Meiners:
Hallo Gruppe,

ich versuche eine abstrakte Datenbankklasse unter Python3 zu programmieren:


sorry für die Fehlinformation, aber das Pythonprogramm sieht in
Wirklichkeit so aus:

#! /usr/bin/env python3
# -*- encoding: utf-8 -*-

'''
Created on 08.06.2011

@author: wolfgang
'''

from sqlalchemy import *
from sqlalchemy.orm import *
from sqlalchemy.orm.session import sessionmaker

class abstractdb:
def __init__(self, dbname):
self.dbname = dbname
self.metadata = MetaData(bind=self.dbname)

self.person_table = Table('tf_person', self.metadata,
Column('id', Integer, primary_key=True),
Column('Name', Unicode(32)),
Column('Vorname', Unicode(31))
)

self.metadata.create_all(checkfirst=True) # Verschoben
mapper(self.Person, self.person_table)

self.Session = sessionmaker() # Verschoben
self.session = self.Session() # Verschoben

class Person:
pass



if __name__ == '__main__':
DB = abstractdb('sqlite:///:memory:')

DB.Person.Name='Müller'
DB.Person.Vorname='Hubert'
DB.session.commit()

for row in DB.session.query(DB.Person).all():
print(row.Name)

Es làuft ohne Fehlermeldung durch. Die Änderung gegenüber der ersten
Version betrifft nur die Verschiebung einiger Codezeilen.

Ähnliche fragen