summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/schema.py
Commit message (Collapse)AuthorAgeFilesLines
...
* happy new yearMike Bayer2009-01-121-1/+1
|
* - Concrete inheriting mappers now instrument attributes which are inherited ↵Mike Bayer2009-01-111-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | from the superclass, but are not defined for the concrete mapper itself, with an InstrumentedAttribute that issues a descriptive error when accessed. [ticket:1237] - Added a new `relation()` keyword `back_populates`. This allows configuation of backreferences using explicit relations. [ticket:781] This is required when creating bidirectional relations between a hierarchy of concrete mappers and another class. [ticket:1237] - Test coverage added for `relation()` objects specified on concrete mappers. [ticket:1237] - A short documentation example added for bidirectional relations specified on concrete mappers. [ticket:1237] - Mappers now instrument class attributes upon construction with the final InstrumentedAttribute object which remains persistent. The `_CompileOnAttr`/`__getattribute__()` methodology has been removed. The net effect is that Column-based mapped class attributes can now be used fully at the class level without invoking a mapper compilation operation, greatly simplifying typical usage patterns within declarative. [ticket:1269] - Index now accepts column-oriented InstrumentedAttributes (i.e. column-based mapped class attributes) as column arguments. [ticket:1214] - Broke up attributes.register_attribute into two separate functions register_descriptor and register_attribute_impl. The first assembles an InstrumentedAttribute or Proxy descriptor, the second assembles the AttributeImpl inside the InstrumentedAttribute. register_attribute remains for outside compatibility. The argument lists have been simplified. - Removed class_manager argument from all but MutableScalarAttributeImpl (the branch had removed class_ as well but this has been reverted locally to support the serializer extension). - Mapper's previous construction of _CompileOnAttr now moves to a new MapperProperty.instrument_class() method which is called on all MapperProperty objects at the moment the mapper receives them. All MapperProperty objects now call attributes.register_descriptor within that method to assemble an InstrumentedAttribute object directly. - InstrumentedAttribute now receives the "property" attribute from the given PropComparator. The guesswork within the constructor is removed, and allows "property" to serve as a mapper compilation trigger. - RelationProperty.Comparator now triggers compilation of its parent mapper within a util.memoized_property accessor for the "property" attribute, which is used instead of "prop" (we can probably remove "prop"). - ColumnProperty and similar handle most of their initialization in their __init__ method since they must function fully at the class level before mappers are compiled. - SynonymProperty and ComparableProperty move their class instrumentation logic to the new instrument_class() method. - LoaderStrategy objects now add their state to existing InstrumentedAttributes using attributes.register_attribute_impl. Both column and relation-based loaders instrument in the same way now, with a unique InstrumentedAttribute *and* a unique AttributeImpl for each class in the hierarchy. attribute.parententity should now be correct in all cases. - Removed unitofwork.register_attribute, and simpified the _register_attribute methods into a single function in strategies.py. unitofwork exports the UOWEventHandler extension directly. - To accomodate the multiple AttributeImpls across a class hierarchy, the sethasparent() method now uses an optional "parent_token" attribute to identify the "parent". AbstractRelationLoader sends the MapperProperty along to serve as this token. If the token isn't present (which is only the case in the attributes unit tests), the AttributeImpl is used instead, which is essentially the same as the old behavior. - Added new ConcreteInheritedProperty MapperProperty. This is invoked for concrete mappers within _adapt_inherited_property() to accomodate concrete mappers which inherit unhandled attributes from the base class, and basically raises an exception upon access. [ticket:1237] - attributes.register_attribute and register_descriptor will now re-instrument an attribute unconditionally without checking for a previous attribute. Not sure if this is controversial. It's needed so that ConcreteInheritedProperty instrumentation can be overridden by an incoming legit MapperProperty without any complexity. - Added new UninstrumentedColumnLoader LoaderStrategy. This is used by the polymorphic_on argument when the given column is not represented within the mapped selectable, as is typical with a concrete scenario which maps to a polymorphic union. It does not configure class instrumentation, keeping polymorphic_on from getting caught up in the new concrete attribute-checking logic. - RelationProperty now records its "backref" attributes using a set assigned to `_reverse_property` instead of a scalar. The `back_populates` keyword allows any number of properties to be involved in a single bidirectional relation. Changes were needed to RelationProperty.merge(), DependencyProcessor to accomodate for the new multiple nature of this attribute. - Generalized the methodology used by ManyToManyDP to check for "did the other dependency already handle this direction", building on the `_reverse_property` collection. - post_update logic within dependency.py moves to use the same methodology as ManyToManyDP so that "did the other dependency do this already" checks are made to be specific to the two dependent instances. - Caught that RelationProperty.merge() was writing to instance.__dict__ directly (!) - repaired to talk to instance_state.dict. - Removed needless eager loading example from concrete mapper docs. - Added test for [ticket:965]. - Added the usual Node class/nodes table to orm/_fixtures.py, but haven't used it for anything yet. We can potentially update test/orm/query.py to use this fixture. - Other test/documentation cleanup.
* - Reflected foreign keys will properly locateMike Bayer2008-12-261-36/+47
| | | | | | | | | | | | | | | | | | | | | | | their referenced column, even if the column was given a "key" attribute different from the reflected name. This is achieved via a new flag on ForeignKey/ForeignKeyConstraint called "link_to_name", if True means the given name is the referred-to column's name, not its assigned key. [ticket:650] - removed column types from sqlite doc, we aren't going to list out "implementation" types since they aren't significant and are less present in 0.6 - mysql will report on missing reflected foreign key targets in the same way as other dialects (we can improve that to be immediate within reflecttable(), but it should be within ForeignKeyConstraint()). - postgres dialect can reflect table with an include_columns list that doesn't include one or more primary key columns
* merged -r5299:5438 of py3k warnings branch. this fixes some sqlite py2.6 ↵Mike Bayer2008-12-181-4/+6
| | | | | | | | testing issues, and also addresses a significant chunk of py3k deprecations. It's mainly expicit __hash__ methods. Additionally, most usage of sets/dicts to store columns uses util-based placeholder names.
* - turn __visit_name__ into an explicit member.Mike Bayer2008-12-111-0/+21
| | | | [ticket:1244]
* Index entries for thread safety.Jason Kirtland2008-12-111-4/+9
|
* - removed redundant declarative docsMike Bayer2008-12-081-23/+26
| | | | - cleanup of metadata/foreignkey docs
* documented onupdate, partially documented server_onupdateMike Bayer2008-12-071-4/+24
|
* - re-documented Table and Column constructors, fixed case sensitivity ↵Mike Bayer2008-12-071-167/+172
| | | | | | | description [ticket:1231] - turned on autoclass_content="both". Need to specify __init__ docstring with a newline after the """. - other docs
* - merged -r5338:5429 of sphinx branch.Mike Bayer2008-12-061-10/+8
| | | | | | | | | | | | | - Documentation has been converted to Sphinx. In particular, the generated API documentation has been constructed into a full blown "API Reference" section which organizes editorial documentation combined with generated docstrings. Cross linking between sections and API docs are vastly improved, a javascript-powered search feature is provided, and a full index of all classes, functions and members is provided.
* - Using the same ForeignKey object repeatedlyMike Bayer2008-12-031-0/+2
| | | | | raises an error instead of silently failing later. [ticket:1238]
* - Tickets [ticket:1200].Mike Bayer2008-11-221-5/+16
| | | | | | | | | | | | | | | | - Added note about create_session() defaults. - Added section about metadata.reflect(). - Updated `TypeDecorator` section. - Rewrote the "threadlocal" strategy section of the docs due to recent confusion over this feature. - ordered the init arguments in the docs for sessionmaker(). - other edits
* the @memoized_property fairy pays a visitMike Bayer2008-11-071-55/+52
|
* - Repaired the table.tometadata() method so that a passed-inMike Bayer2008-11-071-16/+18
| | | | schema argument is propigated to ForeignKey constructs.
* Added documentation for the MetaData.sorted_tables() method.Michael Trier2008-10-291-0/+3
|
* Corrected method documentation for MetaData.drop_all().Michael Trier2008-10-291-1/+1
|
* - moved _FigureVisitName into visitiors.VisitorType, added Visitor base ↵Mike Bayer2008-10-251-3/+3
| | | | | | | class to reduce dependencies - implemented _generative decorator for select/update/insert/delete constructs - other minutiae
* - added NoReferencedColumnError, common base class of NoReferenceErrorMike Bayer2008-10-211-1/+1
| | | | | | - relation() won't hide unrelated ForeignKey errors inside of the "please specify primaryjoin" message when determining join condition.
* - 0.5.0rc3, dohMike Bayer2008-10-181-16/+7
| | | | | | | | | | | | - The internal notion of an "OID" or "ROWID" column has been removed. It's basically not used by any dialect, and the possibility of its usage with psycopg2's cursor.lastrowid is basically gone now that INSERT..RETURNING is available. - Removed "default_order_by()" method on all FromClause objects. - profile/compile/select test is 8 function calls over on buildbot 2.4 for some reason, will adjust after checking the results of this commit
* - "not equals" comparisons of simple many-to-one relationMike Bayer2008-10-181-3/+3
| | | | | | | | | | | | | | | to an instance will not drop into an EXISTS clause and will compare foreign key columns instead. - removed not-really-working use cases of comparing a collection to an iterable. Use contains() to test for collection membership. - Further simplified SELECT compilation and its relationship to result row processing. - Direct execution of a union() construct will properly set up result-row processing. [ticket:1194]
* - added a few more assertions for [ticket:1165]Mike Bayer2008-10-041-0/+2
| | | | - removed non-2.5 partial.keywords, partial.name, etc., not sure what those are getting us here
* Allowed column types to be callables. Fixes #1165.Michael Trier2008-10-041-3/+7
|
* - fixed a bug in declarative test which was looking for old version of historyMike Bayer2008-08-191-3/+12
| | | | | | | | | | - Added "sorted_tables" accessor to MetaData, which returns Table objects sorted in order of dependency as a list. This deprecates the MetaData.table_iterator() method. The "reverse=False" keyword argument has also been removed from util.sort_tables(); use the Python 'reversed' function to reverse the results. [ticket:1033]
* - Spiffed up the deprecated decorators & @flipped 'em up topJason Kirtland2008-07-161-8/+4
|
* - Removed 2.3 set emulations/enhancements.Jason Kirtland2008-07-151-6/+6
| | | | (sets.Set-based collections & DB-API returns still work.)
* And thus ends support for Python 2.3.Jason Kirtland2008-07-151-6/+7
|
* Added prefixes option to that accepts a list of string to insert after ↵Michael Trier2008-07-051-0/+6
| | | | CREATE in the CREATE TABLE statement. Closes #1075.
* Corrected a reference to alt_schema_2 and fixed a docstring indentation for ↵Michael Trier2008-07-031-8/+8
| | | | Table.
* simplified _get_colspecGaëtan de Menten2008-07-021-5/+1
|
* Don't blat Table.quote= when resolving foreign keys.Jason Kirtland2008-05-151-6/+12
|
* Columns now have default= and server_default=. PassiveDefault fades away.Jason Kirtland2008-05-141-23/+93
|
* add target_fullname as a public property for _get_colspecGaëtan de Menten2008-05-091-0/+2
|
* r4695 merged to trunk; trunk now becomes 0.5.Mike Bayer2008-05-091-67/+77
| | | | 0.4 development continues at /sqlalchemy/branches/rel_0_4
* doc update on quoteMike Bayer2008-05-081-10/+9
|
* Added missing argument check on CheckConstraintJason Kirtland2008-05-061-1/+4
|
* - Column.copy() respects the value of "autoincrement",Mike Bayer2008-05-051-1/+1
| | | | fixes usage with Migrate [ticket:1021]
* - fixed reentrant mapper compile hang whenMike Bayer2008-05-021-0/+3
| | | | | a declared attribute is used within ForeignKey, ie. ForeignKey(MyOtherClass.someattribute)
* - an unfortunate naming conflictMike Bayer2008-05-021-1/+1
| | | | - needed sql import on and()
* - factored out the logic used by Join to create its join conditionMike Bayer2008-05-021-1/+1
| | | | | | | - With declarative, joined table inheritance mappers use a slightly relaxed function to create the "inherit condition" to the parent table, so that other foreign keys to not-yet-declared Table objects don't trigger an error.
* typoGaëtan de Menten2008-04-251-1/+1
|
* factored down exportable_columns/flatten_cols/proxy_column/oid_etc_yada down ↵Mike Bayer2008-04-041-5/+0
| | | | to a single, streamlined "_populate_column_collection" method called for all selectables
* - merged sync_simplify branchMike Bayer2008-04-041-1/+1
| | | | | | | | | | | | | | | | - The methodology behind "primaryjoin"/"secondaryjoin" has been refactored. Behavior should be slightly more intelligent, primarily in terms of error messages which have been pared down to be more readable. In a slight number of scenarios it can better resolve the correct foreign key than before. - moved collections unit test from relationships.py to collection.py - PropertyLoader now has "synchronize_pairs" and "equated_pairs" collections which allow easy access to the source/destination parent/child relation between columns (might change names) - factored out ClauseSynchronizer (finally) - added many more tests for priamryjoin/secondaryjoin error checks
* - Added PendingDeprecationWarning supportJason Kirtland2008-03-291-2/+2
| | | | - Deprecation decorator is now a real decorator
* - the "owner" keyword on Table is now deprecated, and isMike Bayer2008-03-221-14/+12
| | | | | | | | | | | | | | | | | | | | exactly synonymous with the "schema" keyword. Tables can now be reflected with alternate "owner" attributes, explicitly stated on the Table object or not using "schema". - all of the "magic" searching for synonyms, DBLINKs etc. during table reflection are disabled by default unless you specify "oracle_resolve_synonyms=True" on the Table object. Resolving synonyms necessarily leads to some messy guessing which we'd rather leave off by default. When the flag is set, tables and related tables will be resolved against synonyms in all cases, meaning if a synonym exists for a particular table, reflection will use it when reflecting related tables. This is stickier behavior than before which is why it's off by default.
* - Column._set_parent will complete the key==name contract for instances ↵Jason Kirtland2008-03-181-3/+9
| | | | constructed anonymously
* - 'name' is no longer a require constructor argument for Column(). It (and ↵Jason Kirtland2008-03-181-1/+23
| | | | .key) may now be deferred until the Column is added to a Table.
* - fixed missing import [ticket:989]Jason Kirtland2008-03-121-3/+6
|
* - constraint constructor docstring fiestaJason Kirtland2008-03-051-13/+176
|
* - More docs for r4223Jason Kirtland2008-03-041-2/+9
|
* - Tweaked error messaging for unbound DDL().execute()Jason Kirtland2008-03-041-1/+1
|