0.2 Changelog

0.2.8

Veröffentlicht: Di 05 Sep 2006
  • [keine_tags]

    Bereinigung der Verbindungsmethoden + Dokumentation. Benutzerdefinierte DBAPI-Argumente, die in der Abfragezeichenfolge angegeben sind, das Argument 'connect_args' für 'create_engine' oder eine benutzerdefinierte Erstellungsfunktion über die Funktion 'creator' für 'create_engine'.

  • [keine_tags]

    Argument "recycle" zum Pool hinzugefügt, ist "pool_recycle" bei create_engine, Standard ist 3600 Sekunden; Verbindungen nach diesem Alter werden geschlossen und durch eine neue ersetzt, um Datenbanken zu handhaben, die veraltete Verbindungen automatisch schließen.

    Referenzen: #274

  • [keine_tags]

    Änderung der Semantik von "invalidate" bei gepoolten Verbindungen; weist den zugrunde liegenden Verbindungsdatensatz an, sich beim nächsten Aufruf neu zu verbinden. "invalidate" wird auch automatisch aufgerufen, wenn ein Fehler beim zugrunde liegenden Aufruf von connection.cursor() auftritt. Dies soll es dem Verbindungspool ermöglichen, sich mit einer Datenbank neu zu verbinden, die gestoppt und neu gestartet wurde, ohne die verbindende Anwendung neu zu starten.

    Referenzen: #121

  • [keine_tags]

    Hoppla! Der Tutorial-Doctest war eine ganze Weile defekt.

  • [keine_tags]

    Die Methode add_property() auf Mapper führt einen Schritt "alle Mapper kompilieren" durch, falls die gegebene Eigenschaft auf einen nicht kompilierten Mapper verweist (wie im Tutorial der Fall!).

  • [keine_tags]

    Prüfen, ob die pg-Sequenz bereits existiert, bevor sie erstellt wird.

    Referenzen: #277

  • [keine_tags]

    Wenn eine kontextuelle Sitzung über MapperExtension.get_session (wie beim sessioncontext-Plugin usw.) eingerichtet wird, verwendet eine Lazy-Load-Operation standardmäßig diese Sitzung, wenn das Elternobjekt noch nicht persistent mit einer Sitzung verbunden ist.

  • [keine_tags]

    Lazy-Loads werden nicht für ein Objekt ausgelöst, das keine Datenbankidentität hat (warum? siehe https://sqlalchemy.de/trac/wiki/WhyDontForeignKeysLoadData).

  • [keine_tags]

    Das Unit-of-Work führt eine bessere Prüfung auf "verwaiste" Objekte durch, die Teil eines "delete-orphan"-Kaskadens sind, für bestimmte Bedingungen, bei denen die Eltern nicht zum Kaskadieren verfügbar sind.

  • [keine_tags]

    Mapper können feststellen, ob eines ihrer Objekte ein "Waisenkind" ist, basierend auf Interaktionen mit dem Attributpaket. Diese Prüfung basiert auf einem Statusflag, das für jede Beziehung geführt wird, wenn Objekte miteinander verbunden und getrennt werden.

  • [keine_tags]

    Es ist jetzt ungültig, eine selbstbezügliche Beziehung mit "delete-orphan" zu deklarieren (da die oben genannte Prüfung deren Speicherung unmöglich machen würde).

  • [keine_tags]

    Verbesserte Prüfung auf Objekte, die Teil einer Sitzung sind, wenn das Unit-of-Work versucht, sie als Teil einer Beziehung zu flushen().

  • [keine_tags]

    Die Ausführung von Anweisungen unterstützt die mehrfache Verwendung desselben BindParam-Objekts in einem Ausdruck; vereinfachte Handhabung von Positionsargumenten. Gute Arbeit von Bill Noon, der die Grundidee herausgefunden hat.

    Referenzen: #280

  • [keine_tags]

    Die Postgres-Reflektion wurde auf die Verwendung von pg_schema-Tabellen umgestellt, kann mit dem Argument use_information_schema=True für create_engine überschrieben werden.

    Referenzen: #60, #71

  • [keine_tags]

    Das Argument case_sensitive wurde zu MetaData, Table, Column hinzugefügt, das sich automatisch bestimmt, basierend darauf, ob ein übergeordnetes Schema-Element eine Einstellung von None für das Flag hat, oder wenn nicht, ob der Bezeichnungsname nur aus Kleinbuchstaben besteht oder nicht. Wenn auf True gesetzt, wird die Anführungszeichensetzung für Bezeichner mit gemischten oder Großbuchstaben angewendet. Die Anführungszeichensetzung wird auch automatisch in allen Fällen auf Bezeichner angewendet, die bekanntermaßen reservierte Wörter sind oder andere nicht standardmäßige Zeichen enthalten. Verschiedene Datenbankdialekte können all dies überschreiben, aber derzeit verwenden sie alle das Standardverhalten. Getestet mit Postgres, MySQL, SQLite, Oracle. Benötigt weitere Tests mit Firebird, MS-SQL. Teil der fortlaufenden Arbeit mit

    Referenzen: #155

  • [keine_tags]

    Unit-Tests wurden aktualisiert, um ohne installierten pysqlite zu laufen; der Pool-Test verwendet einen Mock-DBAPI.

  • [keine_tags]

    URLs unterstützen maskierte Zeichen in Passwörtern.

    Referenzen: #281

  • [keine_tags]

    limit/offset zu UNION-Abfragen hinzugefügt (noch nicht in Oracle).

  • [keine_tags]

    Flag "timezone=True" zu DateTime- und Time-Typen hinzugefügt. Postgres wandelt dies bisher in "TIME[STAMP] (WITH|WITHOUT) TIME ZONE" um, sodass die Kontrolle über die Zeitzonenpräsenz besser steuerbar ist (psycopg2 gibt Datetime-Objekte mit tzinfo zurück, falls verfügbar, was zu Verwirrung mit Datetime-Objekten ohne führen kann).

  • [keine_tags]

    Korrektur bei der Verwendung von query.count() mit distinct, **kwargs mit SelectResults count().

    Referenzen: #287

  • [keine_tags]

    Table wird aus MetaData deregistriert, wenn autoload fehlschlägt.

    Referenzen: #289

  • [keine_tags]

    Import von py2.5s sqlite3.

    Referenzen: #293

  • [keine_tags]

    Unicode-Korrektur für startswith()/endswith().

    Referenzen: #296

0.2.7

Veröffentlicht: Sa 12 Aug 2006
  • [keine_tags]

    Anführungszeichenfunktionen wurden so eingerichtet, dass datenbankspezifische Anführungszeichen für einzelne Tabellen-, Schema- und Spaltenbezeichner bei der Verwendung in allen Abfragen/Erstellungen/Löschungen aktiviert werden können. Aktivierung über "quote=True" in Table oder Column, sowie "quote_schema=True" in Table. Dank an Aaron Spike für die ausgezeichnete Arbeit.

  • [keine_tags]

    assignmapper setzte is_primary=True, was zu allen möglichen Problemen führte, da keine Ausnahme ausgelöst wurde, wenn redundante Mapper eingerichtet wurden; korrigiert.

  • [keine_tags]

    Option allow_null_pks zu Mapper hinzugefügt, erlaubt Zeilen, bei denen einige Primärschlüsselspalten null sind (z. B. beim Mapping auf Outer Joins usw.).

  • [keine_tags]

    Änderung am Unitofwork, um die Reihenfolge in der "neuen" Liste oder der Liste der UOWTask-Objekte nicht zu erhalten; stattdessen werden neue Objekte mit einer Bestellungs-ID gekennzeichnet, wenn sie als neu in der Sitzung registriert werden, und die INSERT-Anweisungen werden dann im Mapper save_obj sortiert. Die INSERT-Reihenfolge wurde im Grunde bis zum Ende des Flush-Zyklus verschoben. So müssen sich die verschiedenen Sortierungen und Organisationen innerhalb von UOWTask (insbesondere die zirkuläre Task-Sortierung) nicht um die Aufrechterhaltung der Reihenfolge kümmern (was sie ohnehin nicht taten).

  • [keine_tags]

    Reflektion von Fremdschlüsseln korrigiert, um die referenzierte Tabelle zu laden, falls sie noch nicht geladen war.

  • [keine_tags]

    • URL-Abfragezeichenfolgenargumente an die connect()-Funktion übergeben.

    Referenzen: #256

  • [keine_tags]

    • Oracle Boolean-Typ.

    Referenzen: #257

  • [keine_tags]

    Benutzerdefinierte Primär-/Sekundärverbindungsbedingungen in einer Relation *werden* standardmäßig an Backrefs weitergegeben. Die Angabe eines backref() überschreibt dieses Verhalten.

  • [keine_tags]

    Bessere Prüfung auf mehrdeutige Join-Bedingungen in sql.Join; führt zu einer besseren Fehlermeldung in PropertyLoader (d. h. relation()/backref()) für den Fall, dass die Join-Bedingung nicht vernünftig bestimmt werden kann.

  • [keine_tags]

    SQLite erstellt ForeignKeyConstraint-Objekte ordnungsgemäß bei der Tabellenreflexion.

  • [keine_tags]

    Anpassungen am Pool, die sich aus Änderungen ergeben. Der Überlaufzähler sollte nur dekrementiert werden, wenn die Verbindung tatsächlich erfolgreich war. Ein Testskript wurde hinzugefügt, um dies zu testen.

    Referenzen: #224

  • [keine_tags]

    Reflektion von Standardwerten in MySQL wurde zu PassiveDefault korrigiert.

  • [keine_tags]

    Typen 'tinyint', 'mediumint' zu MS-SQL hinzugefügt.

    Referenzen: #263, #264

  • [keine_tags]

    SingletonThreadPool hat eine Größe und führt einen Bereinigungslauf durch, sodass nur eine bestimmte Anzahl von Thread-lokalen Verbindungen bestehen bleibt (erforderlich für SQLite-Anwendungen, die Threads massenhaft entsorgen).

  • [keine_tags]

    Kleinere Pickle-Fehler bei Lazy Loadern behoben.

    Referenzen: #265, #267

  • [keine_tags]

    Möglicher Fehler in der MySQL-Reflektion behoben, bei dem bestimmte Versionen ein Array anstelle einer Zeichenfolge für den Aufruf von SHOW CREATE TABLE zurückgeben.

  • [keine_tags]

    Korrektur von Lazy Loads beim Mapping zu Joins.

    Referenzen: #1770

  • [keine_tags]

    Alle create()/drop()-Aufrufe haben ein Schlüsselwortargument "connectable". "engine" ist veraltet.

  • [keine_tags]

    Korrektur von ms-sql connect(), damit es mit adodbapi funktioniert.

  • [keine_tags]

    Flag "nowait" zu Select() hinzugefügt.

  • [keine_tags]

    Die Vererbungsprüfung verwendet issubclass() anstelle einer direkten __mro__-Prüfung, um sicherzustellen, dass Klasse A von B erbt, sodass die Mapper-Vererbung flexibler mit der Klassenvererbung übereinstimmt.

    Referenzen: #271

  • [keine_tags]

    SelectResults verwendet eine Unterabfrage, wenn eine Aggregatfunktion (z. B. max, min usw.) auf ein SelectResults mit einer ORDER BY-Klausel angewendet wird.

    Referenzen: #252

  • [keine_tags]

    Korrekturen an Typen, damit datenbankspezifische Typen leichter verwendet werden können; Korrekturen an MySQL-Texttypen, damit sie mit dieser Methodik funktionieren.

    Referenzen: #269

  • [keine_tags]

    Einige Korrekturen an der Organisation von SQLite-Datumsdatentypen.

  • [keine_tags]

    MSTinyInteger zu MS-SQL hinzugefügt.

    Referenzen: #263

0.2.6

Veröffentlicht: Do 20 Jul 2006
  • [keine_tags]

    Große Überarbeitung des Schemas zur Ermöglichung wirklich zusammengesetzter Primär- und Fremdschlüsselbeschränkungen durch neue ForeignKeyConstraint- und PrimaryKeyConstraint-Objekte. Bestehende Methoden zur Erstellung von Primär-/Fremdschlüsseln wurden nicht geändert, verwenden aber diese neuen Objekte im Hintergrund. Die Tabellenerstellung und -reflexion ist jetzt tabellenorientierter und weniger spaltenorientiert.

    Referenzen: #76

  • [keine_tags]

    Überarbeitung des MapperExtension-Aufrufschemas, funktionierte bisher nicht sehr gut.

  • [keine_tags]

    Tweaks an ActiveMapper, unterstützt selbstbezügliche Beziehungen.

  • [keine_tags]

    Leichte Umordnung im objectstore (in activemapper/threadlocal), sodass die SessionContext über '.context' referenziert wird, anstatt direkt davon abgeleitet zu werden.

  • [keine_tags]

    ActiveMapper verwendet den objectstore von threadlocal, wenn das Modul beim Import von activemapper aktiviert ist.

  • [keine_tags]

    Kleine Korrektur am URL-Regexp, um Dateinamen mit '@' darin zu erlauben.

  • [keine_tags]

    Korrekturen an Session expunge/update/etc... Benötigt weitere Bereinigung.

  • [keine_tags]

    Mapper, die select_table verwenden, wurden *immer noch* nicht immer kompiliert.

  • [keine_tags]

    Boolean-Datentyp korrigiert.

  • [keine_tags]

    count()/count_by() zur Liste der von assignmapper weitergeleiteten Methoden hinzugefügt; dies fügt sie auch zu activemapper hinzu.

  • [keine_tags]

    Verbindungsfehler werden in DBAPIError eingewickelt.

  • [keine_tags]

    ActiveMapper unterstützt jetzt das automatische Laden von Spaltendefinitionen aus der Datenbank, wenn Sie ein Attribut __autoload__ = True in Ihrer inneren Mapping-Klasse angeben. Derzeit unterstützt dies keine Reflexion von Beziehungen.

  • [keine_tags]

    Das verzögerte Laden von Spalten konnte unter bestimmten Umständen den Verbindungsstatus in einem Flush() durcheinander bringen; dies wurde behoben.

  • [keine_tags]

    expunge() funktionierte nicht mit Cascade; behoben.

  • [keine_tags]

    Potenzielle Endlosschleife in kaskadierenden Operationen behoben.

  • [keine_tags]

    Funktion "synonym()" hinzugefügt, angewendet auf Eigenschaften, um einen Propnamen zu haben, der dem eines anderen entspricht, zum Zwecke der Überschreibung von Props und um den ursprünglichen Propnamen für select_by() zugänglich zu machen.

  • [keine_tags]

    Korrektur der Typisierung in der Klauselkonstruktion, was insbesondere Typenprobleme mit polymorphic_union hilft (CAST/ColumnClause gibt seinen Typ an Proxy-Spalten weiter).

  • [keine_tags]

    Arbeiten an der Mapper-Kompilierung werden fortgesetzt, eines Tages wird sie funktionieren.... Die Initialisierung von MapperProperty-Objekten wurde nach der Erstellung aller Mapper verschoben, um zirkuläre Kompilierungen besser zu handhaben. Die Methode do_init() wird jetzt für alle Eigenschaften aufgerufen, die sich ihres "ererbten" Status besser bewusst sind, falls vorhanden.

  • [keine_tags]

    Eager-Loads sind für selbstbezügliche Beziehungen oder Beziehungen zu einem erbenden Mapper (der ebenfalls selbstbezüglich ist) explizit nicht erlaubt.

  • [keine_tags]

    Bind-Parametern-Größe in query._get reduziert, um den wählerischen Oracle zufriedenzustellen.

    Referenzen: #244

  • [keine_tags]

    Argument 'checkfirst' zu table.create()/table.drop(), sowie zu table.exists() hinzugefügt.

    Referenzen: #234

  • [keine_tags]

    Einige weitere fortlaufende Korrekturen an der Vererbung.

    Referenzen: #245

  • [keine_tags]

    Attribute/Backref/Orphan/History-Tracking-Tweaks wie üblich...

0.2.5

Veröffentlicht: Sa 08 Jul 2006
  • [keine_tags]

    Fehler mit Endlosschleife in select_by() behoben, wenn die Traversierung auf zwei Mapper stieß, die sich gegenseitig referenzierten.

  • [keine_tags]

    Alle Unittests aufgewertet, um './lib/' in sys.path einzufügen, was das neue PYTHONPATH-zerstörende Verhalten von setuptools umgeht.

  • [keine_tags]

    Weitere Korrekturen mit Attributen/Abhängigkeiten/etc....

  • [keine_tags]

    Verbesserte Fehlerbehandlung, wenn DynamicMetaData nicht verbunden ist.

  • [keine_tags]

    MS-SQL-Unterstützung weitgehend funktionsfähig (getestet mit pymssql).

  • [keine_tags]

    Die Reihenfolge von UPDATE- und DELETE-Anweisungen innerhalb von Gruppen erfolgt jetzt nach den Primärschlüsselwerten, für eine deterministischere Reihenfolge.

  • [keine_tags]

    Mapper-Erweiterungen after_insert/delete/update werden jetzt pro Objekt und nicht pro Objekt/pro Tabelle aufgerufen.

  • [keine_tags]

    Weitere Korrekturen/Refactorings der Mapper-Kompilierung.

0.2.4

Veröffentlicht: Di 27 Jun 2006
  • [keine_tags]

    Try/Except beim Setzen von init.__name__ auf eine zugeordnete Klasse durch den Mapper, unterstützt Python 2.3.

  • [keine_tags]

    Fehler behoben, bei dem die threadlocal-Engine trotz laufender Transaktion immer noch autocommit ausgeführt hat.

  • [keine_tags]

    Lazy Load- und Deferred Load-Operationen erfordern, dass das Elternobjekt in einer Sitzung ist, um die Operation durchzuführen; während vorher die Operation einfach eine leere Liste oder None zurückgab, wird jetzt eine Ausnahme ausgelöst.

  • [keine_tags]

    Session.update() ist etwas nachsichtiger, wenn die Sitzung, an die das Objekt zuvor angehängt war, gesammelt wurde; ansonsten muss die Instanz immer noch explizit aus der vorherigen Sitzung entfernt werden.

  • [keine_tags]

    Korrekturen an der Mapper-Kompilierung, Prüfung auf mehr Fehlerbedingungen.

  • [keine_tags]

    Kleine Korrektur beim Eager Loading in Kombination mit Ordering/Limit/Offset.

  • [keine_tags]

    Ganz bemerkenswert: Ein einzelnes Leerzeichen zwischen "CREATE TABLE" und "(<der Rest>" hinzugefügt, da *so* MySQL einen nicht reservierten Wort-Tabellennamen anzeigt.....

    Referenzen: #206

  • [keine_tags]

    Weitere Korrekturen an der Vererbung, im Zusammenhang mit dem ordnungsgemäßen Speichern von Many-to-Many-Beziehungen.

  • [keine_tags]

    Fehler bei der Angabe eines expliziten Moduls für den MySQL-Dialekt behoben.

  • [keine_tags]

    Wenn die QueuePool abläuft, wird eine TimeoutError ausgelöst, anstatt fälschlicherweise eine weitere Verbindung herzustellen.

  • [keine_tags]

    Die Verwendung von Queue.Queue im Pool wurde durch eine lokal modifizierte Version ersetzt (funktioniert in py2.3/2.4!), die ein threading.RLock als Mutex verwendet. Dies dient zur Behebung eines gemeldeten Falls, bei dem die __del__()-Methode eines ConnectionFairy innerhalb der get()-Methode der Queue aufgerufen wurde, die dann ihre Verbindung über die put()-Methode an die Queue zurückgibt, was zu einem reentranten Hängen führt, es sei denn, threading.RLock wird verwendet.

  • [keine_tags]

    Postgres platziert das SERIAL-Schlüsselwort nicht auf einer Primärschlüsselspalte, wenn diese eine Fremdschlüsselbeschränkung hat.

  • [keine_tags]

    Die Cursor()-Methode von ConnectionFairy erlaubt die Weiterleitung datenbankspezifischer Erweiterungsargumente.

    Referenzen: #221

  • [keine_tags]

    Lazy Load-Bind-Parameter geben den Spaltentyp ordnungsgemäß weiter.

    Referenzen: #225

  • [keine_tags]

    Neue MySQL-Typen: MSEnum, MSTinyText, MSMediumText, MSLongText usw. Mehr Unterstützung für MS-spezifische Längen-/Präzisionsparameter in numerischen Typen. Patch von Mike Bernson.

  • [keine_tags]

    Einige Korrekturen am Connection Pool invalidate().

    Referenzen: #224

0.2.3

Veröffentlicht: Sa 17 Jun 2006
  • [keine_tags]

    Überarbeitung der Mapper-Kompilierung zur verzögerten Ausführung. Dies ermöglicht es, Mapper in beliebiger Reihenfolge zu konstruieren, und ihre Beziehungen zueinander werden kompiliert, wenn die Mapper zum ersten Mal verwendet werden.

  • [keine_tags]

    Ein ziemlich großes Geschwindigkeitsengpass bei kaskadierenden Vorgängen, insbesondere bei Verwendung von Backrefs, behoben.

  • [keine_tags]

    Das Attributinstrumentierungsmodul wurde komplett neu geschrieben; es ist jetzt deutlich einfacher und übersichtlicher, etwas schneller. Die "Historie" eines Attributs wird nicht mehr bei jeder Änderung mikroverwaltet, sondern ist Teil eines "CommittedState"-Objekts, das erstellt wird, wenn die Instanz zum ersten Mal geladen wird. HistoryArraySet ist weg, das Verhalten von Listenattributen ist jetzt offener (d. h. sie sind keine Mengen mehr).

  • [keine_tags]

    Intern wird die py2.4 "set"-Konstruktion verwendet, bei Nichtverfügbarkeit von "set" oder wenn Reihenfolge benötigt wird, wird auf sets.Set zurückgegriffen.

  • [keine_tags]

    Korrektur der Transaktionssteuerung, sodass wiederholte rollback()-Aufrufe nicht fehlschlagen (schlug ziemlich fehl, wenn flush() in einem größeren try/except-Transaktionsblock einen Fehler auslöste).

  • [keine_tags]

    Das Argument "foreignkey" zu relation() kann auch eine Liste sein. Automatische Erkennung von Fremdschlüsseln behoben.

    Referenzen: #151

  • [keine_tags]

    Fehler behoben, bei dem Tabellen mit Schemanamen nicht ordnungsgemäß im MetaData-Objekt indiziert wurden.

  • [keine_tags]

    Fehler behoben, bei dem eine Spalte mit einer neu definierten "key"-Eigenschaft keine Typkonvertierung im ResultProxy durchführte.

    Referenzen: #207

  • [keine_tags]

    Das Attribut 'port' der URL wurde zu einer Ganzzahl korrigiert, falls vorhanden.

  • [keine_tags]

    Alter Fehler behoben, bei dem bei einem Many-to-Many-Tabelle, die als "secondary" zugeordnet war, zusätzliche Spalten vorhanden waren, die Löschoperationen nicht funktionierten.

  • [keine_tags]

    Bugfixes für das Mapping von UNION-Abfragen.

  • [keine_tags]

    Falsche Ausnahmeklasse behoben, die ausgelöst wurde, wenn kein DB-Treiber vorhanden war.

  • [keine_tags]

    Ausnahme NonExistentTable hinzugefügt, die ausgelöst wird, wenn eine nicht existierende Tabelle reflektiert wird.

    Referenzen: #138

  • [keine_tags]

    Kleine Korrektur an ActiveMapper bezüglich One-to-One Backrefs, weitere Refactorings.

  • [keine_tags]

    Überschriebener Konstruktor in zugeordneten Klassen erhält __name__ und __doc__ von der Originalklasse.

  • [keine_tags]

    Kleiner Fehler in selectresult.py bezüglich Mapper-Erweiterung behoben.

    Referenzen: #200

  • [keine_tags]

    Kleine Anpassung an cascade_mappers, derzeit keine sehr stark unterstützte Funktion.

  • [keine_tags]

    Einige Korrekturen an between(), column.between(), um Typisierungsinformationen besser weiterzugeben.

    Referenzen: #202

  • [keine_tags]

    Wenn ein Objekt nicht konstruiert werden kann, wird es nicht zur Sitzung hinzugefügt.

    Referenzen: #203

  • [keine_tags]

    Die CAST-Funktion wurde zu einem eigenen Klauselobjekt mit eigener Kompilierungsfunktion in ansicompiler gemacht; erlaubt MySQL, die meisten CAST-Aufrufe stillschweigend zu ignorieren, da MySQL anscheinend nur die Standard-CAST-Syntax mit Date-Typen unterstützt. MySQL-kompatible CAST-Unterstützung für Strings, Integers usw. ist ein TODO.

0.2.2

Veröffentlicht: Mo 05 Jun 2006
  • [keine_tags]

    Große Verbesserungen am Verhalten der polimorphen Vererbung, die es ermöglicht, mit Adjazenzlisten-Tabellenstrukturen zu arbeiten.

    Referenzen: #190

  • [keine_tags]

    Große Korrekturen und Refactorings von Vererbungsbeziehungen insgesamt, mehr Unit-Tests.

  • [keine_tags]

    Flag "echo_pool" auf create_engine() korrigiert.

  • [keine_tags]

    Korrektur der Dokumentation, falsche Information entfernt, dass close() bei der ThreadLocal-Strategie unsicher ist (es ist völlig sicher!).

  • [keine_tags]

    create_engine() kann URLs als String oder Unicode entgegennehmen.

    Referenzen: #188

  • [keine_tags]

    Firebird-Unterstützung teilweise abgeschlossen; Dank an James Ralston und Brad Clements für ihre Bemühungen.

  • [keine_tags]

    Oracle-URL-Übersetzung war defekt, behoben. Leitet host/port/sid an cx_oracle makedsn() weiter, wenn das Feld 'database' vorhanden ist, andernfalls wird der direkte TNS-Name aus dem Feld 'host' verwendet.

  • [keine_tags]

    Korrektur der Verwendung eines Unicode-Kriteriums für query.get()/query.load().

  • [keine_tags]

    count()-Funktion für auswählbare Elemente verwendet jetzt den Primärschlüssel der Tabelle oder die erste Spalte anstelle von „1“ als Kriterium, verwendet auch das Label „rowcount“ anstelle von „count“.

  • [no_tags]

    Rudimentäre Funktionalität „Mapping zu mehreren Tabellen“ wurde bereinigt und korrekter dokumentiert

  • [no_tags]

    Die Funktion global_connect() wurde wiederhergestellt und wird an eine DynamicMetaData-Instanz namens „default_metadata“ angehängt. Wenn das MetaData-Argument für Table weggelassen wird, wird die Standard-Metadaten verwendet.

  • [no_tags]

    Korrekturen am Session-Kaskadenverhalten, Propagation des Entitätsnamens

  • [no_tags]

    Unittests in Unterverzeichnisse reorganisiert

  • [no_tags]

    Weitere Korrekturen an Thread-lokalen Verbindungsverschachtelungsmustern

0.2.1

Veröffentlicht: Mo, 29. Mai 2006
  • [no_tags]

    Das Argument „pool“ für create_engine() wird ordnungsgemäß weitergegeben

  • [no_tags]

    Korrekturen an der URL, Ausnahme wird ausgelöst, wenn nicht geparst; leere Felder werden nicht an die DB-Verbindungszeichenkette übergeben (eine Zeichenkette wie user:host@/db brach bei Postgres)

  • [no_tags]

    kleine Korrekturen am Mapper beim Einfügen und Abrufen neuer Primärschlüsselwerte

  • [no_tags]

    Die Hälfte von TLEngine, dem ComposedSQLEngine, der mit „strategy=‚threadlocal‘“ verwendet wird, wurde neu geschrieben. Er implementiert jetzt korrekt engine.begin()/ engine.commit(), die vollständig mit connection.begin()/trans.commit() verschachtelt sind. Etwa sechs Unittests wurden hinzugefügt.

  • [no_tags]

    Großer „du“ in pool.Pool, vergessen, das WeakValueDictionary wieder einzufügen. Der Unittest, der dies überprüfen sollte, hat es ebenfalls stillschweigend vermisst. Der Unittest wurde korrigiert, um sicherzustellen, dass ConnectionFairy ordnungsgemäß aus dem Gültigkeitsbereich fällt.

  • [no_tags]

    Platzhalterfunktion dispose() wurde zu SingletonThreadPool hinzugefügt, tut noch nichts

  • [no_tags]

    rollback() wird automatisch aufgerufen, wenn eine Ausnahme ausgelöst wird, aber nur, wenn keine Transaktion läuft (d. h. funktioniert eher wie Autocommit).

  • [no_tags]

    Ausnahmebehandlung bei sqlite behoben, wenn kein sqlite-Modul vorhanden ist

  • [no_tags]

    Zusätzliche Beispieldetails für die Dokumentation des Assoziationsobjekts hinzugefügt

  • [no_tags]

    Connection fügt Prüfungen hinzu, ob sie bereits geschlossen ist

0.2.0

Veröffentlicht: Sa, 27. Mai 2006
  • [no_tags]

    Überarbeitung des Engine-Systems, sodass der frühere SQLEngine nun ein ComposedSQLEngine ist, der aus einer Vielzahl von Komponenten besteht, darunter ein Dialekt, ein ConnectionProvider usw. Dies wirkte sich auf alle DB-Module sowie auf Session und Mapper aus.

  • [no_tags]

    create_engine akzeptiert jetzt nur noch RFC-1738-konforme Zeichenketten: driver://user:password@host:port/database

    Aktualisierung Dieses Format ist allgemein, aber nicht exakt RFC-1738, einschließlich der Tatsache, dass Unterstriche, keine Bindestriche oder Punkte, im „Scheme“-Teil akzeptiert werden.

  • [no_tags]

    Vollständige Neufassung der Methodik für die Verbindungsverwaltung; Connection-Objekte können jetzt Klausel-Elemente direkt ausführen; explizites „close“ sowie Unterstützung im gesamten Engine/ORM zur ordnungsgemäßen Handhabung des Schließens hinzugefügt; Verlassen sich nicht mehr intern auf __del__, um Verbindungen an den Pool zurückzugeben.

    Referenzen: #152

  • [no_tags]

    Überarbeitung der Session-Schnittstelle und -Verwaltung. Verwendet Hibernate-ähnliche Methoden, einschließlich query(class), save(), save_or_update() usw. Es wird standardmäßig kein Thread-lokaler Gültigkeitsbereich installiert. Bietet eine Bindungsschnittstelle zu spezifischen Engines und/oder Verbindungen, sodass zugrunde liegende Schemaobjekte nicht an eine Engine gebunden werden müssen. Ein einfaches SessionTransaction-Objekt wurde hinzugefügt, das Transaktionen über mehrere Engines hinweg vereinfacht aggregieren kann.

  • [no_tags]

    Überarbeitung der Abhängigkeits- und Kaskadenverhalten des Mappers; die Abhängigkeitslogik wurde aus properties.py in ein separates Modul „dependency.py“ ausgelagert. Das „Kaskaden“-Verhalten ist nun explizit steuerbar, ordnungsgemäße Implementierung von „delete“, „delete-orphan“ usw. Das Abhängigkeitssystem kann nun zum Zeitpunkt des Flush erkennen, ob ein Kindobjekt ein Elternteil hat oder nicht, um bessere Entscheidungen darüber zu treffen, wie das Kind in der DB in Bezug auf Löschungen aktualisiert werden soll.

  • [no_tags]

    Überarbeitung von Schema, um auf dem MetaData-Objekt statt auf einer Engine aufzubauen. Das gesamte SQL/Schema-System kann ohne Engines verwendet werden und wird ausschließlich von einem expliziten Connection-Objekt ausgeführt. Die „gebundene“ Methodik existiert über die BoundMetaData für Schemaobjekte. ProxyEngine wird im Allgemeinen nicht mehr benötigt und durch DynamicMetaData ersetzt.

  • [no_tags]

    Echte polymorphe Verhalten implementiert, Korrekturen

    Referenzen: #167

  • [no_tags]

    Das „oid“-System wurde vollständig in das Kompilierungsverhalten verschoben; wenn sie in einer order_by verwendet werden, wo sie nicht verfügbar sind, wird die order_by nicht kompiliert, Korrekturen

    Referenzen: #147

  • [no_tags]

    Überarbeitung der Paketierung; „mapping“ ist jetzt „orm“, „objectstore“ ist jetzt „session“, der alte „objectstore“-Namensraum wird bei Verwendung über das Modul „threadlocal“ geladen

  • [no_tags]

    Mods werden jetzt über „import <modname>“ aufgerufen. Erweiterungen werden gegenüber Mods bevorzugt, da Mods global Monkeypatching betreiben

  • [no_tags]

    Korrektur für add_property, sodass Eigenschaften auf vererbende Mapper übertragen werden

    Referenzen: #154

  • [no_tags]

    Backrefs erstellen sich selbst gegen den primären Mapper ihrer ursprünglichen Eigenschaft; primäre/sekundäre Join-Argumente können zur Überschreibung angegeben werden. Hilft bei ihrer Verwendung mit polymorphen Mapper

  • [no_tags]

    Die Funktion „Tabelle existiert“ wurde implementiert

    Referenzen: #31

  • [no_tags]

    „create_all/drop_all“ wurde dem MetaData-Objekt hinzugefügt

    Referenzen: #98

  • [no_tags]

    Verbesserungen und Korrekturen am topologischen Sortieralgorithmus sowie weitere Unit-Tests

  • [no_tags]

    Eine Tutorial-Seite wurde zur Dokumentation hinzugefügt, die auch mit einem benutzerdefinierten Doctest-Runner ausgeführt werden kann, um sicherzustellen, dass sie ordnungsgemäß funktioniert. Die Dokumentation wurde im Allgemeinen überarbeitet, um neue Code-Muster zu behandeln

  • [no_tags]

    Viele weitere Korrekturen, Refactorings.

  • [no_tags]

    Eine Migrationsanleitung ist im Wiki unter https://sqlalchemy.de/trac/wiki/02Migration verfügbar