SQLObject problemchen

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
flokki
User
Beiträge: 11
Registriert: Dienstag 11. September 2007, 13:41

Hiho!
wollt mal fragen ob jemand erfahrung mit SQLObject hat. hab mir das mal bisl angeschaut und würde gerne damit arbeiten. tutorials findet man ja ned all zu viele, und da kommt auch schon das problem.

laut dem tutorial sollte man so eine 1:m verbindung modellieren können:

Code: Alles auswählen

from sqlobject import *
import sys, os


db_filename = os.path.abspath('data.db')
if os.path.exists(db_filename):
     os.unlink(db_filename)

db_filename = db_filename.replace(':', '|')

connection_string = 'sqlite:/'+ db_filename 
connection = connectionForURI(connection_string)
sqlhub.processConnection = connection


class Address(SQLObject):
     
     street = StringCol()
     city = StringCol()
     state = StringCol(length=2)
     zip = StringCol(length=9)
     person = ForeignKey('Person')
Address.createTable()

class Person(SQLObject):
     
     firstName = StringCol()
     middleInitial = StringCol(length=1, default=None)
     lastName = StringCol()
     addresses = MultipleJoin('Address')
Person.createTable()
leider funkt das bei mir überhaupt ned. Fehler sieht unter anderem so aus:
Traceback (most recent call last):
File "test5.py", line 23, in <module>
Address.createTable()

jemand eine ahnung woran das liegt? bin für jede hilfe dankbar,
mfg
flokki
BlackJack

Bitte immer die Komplette Fehlermeldung angeben. Diese hier endet mit:

Code: Alles auswählen

KeyError: 'No class Person found in the registry [default] (these classes exist: Address, SQLObject)'
Was ja recht deutlich ist. Es gibt `Address` und `SQLObject` aber kein `Person`. Diese Tabelle wird ja erst nach der Zeile 23 erzeugt in der dieser Fehler auftritt. So ein Python Quelltext wird linear abgearbeitet. Du darfst Tabellen erst erzeugen, wenn auch alle verwendeten Klassen definiert sind.
flokki
User
Beiträge: 11
Registriert: Dienstag 11. September 2007, 13:41

...oi. soweit hab ich ned gedacht :oops:
hab mal einfach das beispiel aus dem tutorial verwendet und mich recht geärgert warums ned geht, nachgedacht, aber ned drauf gekommen.

vielen dank für die hilfe, jez funkts.

mfg
Antworten