44
44
<script type="text/javascript" src="../_static/doctools.js"></script>
45
45
<!-- end iterate through sphinx environment script_files -->
47
<script type="text/javascript" src="../_static/detectmobile.js"></script>
47
48
<script type="text/javascript" src="../_static/init.js"></script>
48
49
<link rel="index" title="Index" href="../genindex.html" />
49
50
<link rel="search" title="Search" href="../search.html" />
72
74
<div id="docs-container">
80
<div id="docs-top-navigation-container" class="body-background">
77
81
<div id="docs-header">
82
<div id="docs-version-header">
83
Release: <span class="version-num">0.9.6</span> | Release Date: June 23, 2014
78
86
<h1>SQLAlchemy 0.9 Documentation</h1>
80
<div id="docs-search">
82
<form class="search" action="../search.html" method="get">
83
<input type="text" name="q" size="18" /> <input type="submit" value="Search" />
84
<input type="hidden" name="check_keywords" value="yes" />
85
<input type="hidden" name="area" value="default" />
89
<div id="docs-version-header">
90
Release: <span class="version-num">0.9.4</span> | Release Date: March 28, 2014
97
<div id="docs-top-navigation">
98
<div id="docs-top-page-control" class="docs-navigation-links">
91
<div id="docs-body-container">
93
<div id="fixed-sidebar" class="withsidebar">
96
<div id="docs-sidebar-popout">
97
<h3><a href="../index.html">SQLAlchemy 0.9 Documentation</a></h3>
99
<p id="sidebar-paginate">
100
<a href="index.html" title="Changes and Migration">Up</a> |
102
<a href="changelog_03.html" title="0.3 Changelog">Prev</a> |
103
<a href="changelog_01.html" title="0.1 Changelog">Next</a>
106
<p id="sidebar-topnav">
107
<a href="../index.html">Contents</a> |
108
<a href="../genindex.html">Index</a>
111
<div id="sidebar-search">
112
<form class="search" action="../search.html" method="get">
113
<input type="text" name="q" size="12" /> <input type="submit" value="Search" />
114
<input type="hidden" name="check_keywords" value="yes" />
115
<input type="hidden" name="area" value="default" />
121
<div id="docs-sidebar">
101
<a href="changelog_03.html" title="previous chapter">0.3 Changelog</a>
104
<a href="changelog_01.html" title="next chapter">0.1 Changelog</a>
108
<a href="../contents.html">Table of Contents</a> |
109
<a href="../genindex.html">Index</a>
110
| <a href="../_sources/changelog/changelog_02.txt">view source
115
<div id="docs-navigation-banner">
116
<a href="../index.html">SQLAlchemy 0.9 Documentation</a>
117
» <a href="index.html" title="Changes and Migration">Changes and Migration</a>
131
<div id="docs-body-container">
133
<div id="docs-sidebar">
134
<h3><a href="../index.html">Table of Contents</a></h3>
136
128
<li><a class="reference internal" href="#">0.2 Changelog</a><ul>
137
129
<li><a class="reference internal" href="#change-0.2.8">0.2.8</a></li>
138
130
<li><a class="reference internal" href="#change-0.2.7">0.2.7</a></li>
151
<h4>Previous Topic</h4>
153
<a href="changelog_03.html" title="previous chapter">0.3 Changelog</a>
157
<a href="changelog_01.html" title="next chapter">0.1 Changelog</a>
161
<h4>Quick Search</h4>
163
<form class="search" action="../search.html" method="get">
164
<input type="text" name="q" size="18" /> <input type="submit" value="Search" />
165
<input type="hidden" name="check_keywords" value="yes" />
166
<input type="hidden" name="area" value="default" />
172
151
<div id="docs-body" class="withsidebar" >
174
153
<div class="section" id="changelog">
222
201
<li><p id="change-0.2.8-8"><span class="target" id="change-721c4061d19ede0ca96b182b60e5d466"></span>unit-of-work does a better check for “orphaned” objects that are
223
202
part of a “delete-orphan” cascade, for certain conditions where the
224
parent isnt available to cascade from.<a class="changeset-link headerlink reference internal" href="#change-721c4061d19ede0ca96b182b60e5d466">¶</a><p></p>
203
parent isn’t available to cascade from.<a class="changeset-link headerlink reference internal" href="#change-721c4061d19ede0ca96b182b60e5d466">¶</a><p></p>
227
206
<li><p id="change-0.2.8-9"><span class="target" id="change-fac2a3b6748371c68b935a45f19d6e6a"></span>mappers can tell if one of their objects is an “orphan” based
274
253
so far will convert this to “TIME[STAMP] (WITH|WITHOUT) TIME ZONE”,
275
254
so that control over timezone presence is more controllable (psycopg2
276
255
returns datetimes with tzinfo’s if available, which can create confusion
277
against datetimes that dont).<a class="changeset-link headerlink reference internal" href="#change-76b257b9178528b6903fdfbacb5deb90">¶</a><p></p>
256
against datetimes that don’t).<a class="changeset-link headerlink reference internal" href="#change-76b257b9178528b6903fdfbacb5deb90">¶</a><p></p>
280
259
<li><p id="change-0.2.8-19"><span class="target" id="change-4c9c98073c450c62d75b6c9e1c6be295"></span>fix to using query.count() with distinct, **kwargs with SelectResults
316
295
with the session, and the INSERT statements are then sorted within the
317
296
mapper save_obj. the INSERT ordering has basically been pushed all
318
297
the way to the end of the flush cycle. that way the various sorts and
319
organizations occuring within UOWTask (particularly the circular task
320
sort) dont have to worry about maintaining order (which they werent anyway)<a class="changeset-link headerlink reference internal" href="#change-5cbf0cc0fe21a05f64a43cb5418713a8">¶</a><p></p>
298
organizations occurring within UOWTask (particularly the circular task
299
sort) don’t have to worry about maintaining order (which they weren’t anyway)<a class="changeset-link headerlink reference internal" href="#change-5cbf0cc0fe21a05f64a43cb5418713a8">¶</a><p></p>
323
302
<li><p id="change-0.2.7-4"><span class="target" id="change-b48fef6da67e2ecf70da2c57a64e38de"></span>fixed reflection of foreign keys to autoload the referenced table
417
396
and reflection is now more table oriented rather than column oriented.<a class="changeset-link headerlink reference internal" href="#change-f8f62c879ce023c4b5a34014b6a07e0e">¶</a><p>References: <a class="reference external" href="http://www.sqlalchemy.org/trac/ticket/76">#76</a></p>
420
<li><p id="change-0.2.6-1"><span class="target" id="change-df63112788d96a1161a07e4c96d39b12"></span>overhaul to MapperExtension calling scheme, wasnt working very well
421
previously<a class="changeset-link headerlink reference internal" href="#change-df63112788d96a1161a07e4c96d39b12">¶</a><p></p>
399
<li><p id="change-0.2.6-1"><span class="target" id="change-77fcf46249de1df2311dcc5841a81672"></span>overhaul to MapperExtension calling scheme, wasn’t working very well
400
previously<a class="changeset-link headerlink reference internal" href="#change-77fcf46249de1df2311dcc5841a81672">¶</a><p></p>
424
403
<li><p id="change-0.2.6-2"><span class="target" id="change-3e7930f4e1f7db2df2614a03b648a0d4"></span>tweaks to ActiveMapper, supports self-referential relationships<a class="changeset-link headerlink reference internal" href="#change-3e7930f4e1f7db2df2614a03b648a0d4">¶</a><p></p>
439
418
<li><p id="change-0.2.6-6"><span class="target" id="change-b249794857f4ffef83824b29eb577243"></span>fixes to Session expunge/update/etc...needs more cleanup.<a class="changeset-link headerlink reference internal" href="#change-b249794857f4ffef83824b29eb577243">¶</a><p></p>
442
<li><p id="change-0.2.6-7"><span class="target" id="change-9108145770b8a36658d1f9bd1457b5c3"></span>select_table mappers <em>still</em> werent always compiling<a class="changeset-link headerlink reference internal" href="#change-9108145770b8a36658d1f9bd1457b5c3">¶</a><p></p>
421
<li><p id="change-0.2.6-7"><span class="target" id="change-1e0443db2dd1ddadf93ed4e1637c9100"></span>select_table mappers <em>still</em> weren’t always compiling<a class="changeset-link headerlink reference internal" href="#change-1e0443db2dd1ddadf93ed4e1637c9100">¶</a><p></p>
445
424
<li><p id="change-0.2.6-8"><span class="target" id="change-6110d6d0c21f6d8574611b4a3931fedb"></span>fixed up Boolean datatype<a class="changeset-link headerlink reference internal" href="#change-6110d6d0c21f6d8574611b4a3931fedb">¶</a><p></p>
568
547
<li><p id="change-0.2.4-6"><span class="target" id="change-1afa0092b73a4311513258de8d1bfe61"></span>utterly remarkable: added a single space between ‘CREATE TABLE’
569
and ‘(<the rest of it>’ since <em>thats how MySQL indicates a non-
548
and ‘(<the rest of it>’ since <em>that’s how MySQL indicates a non-
570
549
reserved word tablename.....</em><a class="changeset-link headerlink reference internal" href="#change-1afa0092b73a4311513258de8d1bfe61">¶</a><p>References: <a class="reference external" href="http://www.sqlalchemy.org/trac/ticket/206">#206</a></p>
627
606
of an attribute is no longer micromanaged with each change and is
628
607
instead part of a “CommittedState” object created when the
629
608
instance is first loaded. HistoryArraySet is gone, the behavior of
630
list attributes is now more open ended (i.e. theyre not sets anymore).<a class="changeset-link headerlink reference internal" href="#change-1c0e73f78920f1f97d78a0e02b7db01f">¶</a><p></p>
609
list attributes is now more open ended (i.e. they’re not sets anymore).<a class="changeset-link headerlink reference internal" href="#change-1c0e73f78920f1f97d78a0e02b7db01f">¶</a><p></p>
633
612
<li><p id="change-0.2.3-3"><span class="target" id="change-c64bb0af937cfa88844e4ab96b6733fd"></span>py2.4 “set” construct used internally, falls back to sets.Set when
634
613
“set” not available/ordering is needed.<a class="changeset-link headerlink reference internal" href="#change-c64bb0af937cfa88844e4ab96b6733fd">¶</a><p></p>
637
<li><p id="change-0.2.3-4"><span class="target" id="change-173425ac8faf5c96a6229372c6e4701e"></span>fix to transaction control, so that repeated rollback() calls
638
dont fail (was failing pretty badly when flush() would raise
639
an exception in a larger try/except transaction block)<a class="changeset-link headerlink reference internal" href="#change-173425ac8faf5c96a6229372c6e4701e">¶</a><p></p>
616
<li><p id="change-0.2.3-4"><span class="target" id="change-8de15dabb0ded4dfee956d664aef38e4"></span>fix to transaction control, so that repeated rollback() calls
617
don’t fail (was failing pretty badly when flush() would raise
618
an exception in a larger try/except transaction block)<a class="changeset-link headerlink reference internal" href="#change-8de15dabb0ded4dfee956d664aef38e4">¶</a><p></p>
642
621
<li><p id="change-0.2.3-5"><span class="target" id="change-34c175944f8e671890f062d720dda4b5"></span>“foreignkey” argument to relation() can also be a list. fixed
643
622
auto-foreignkey detection<a class="changeset-link headerlink reference internal" href="#change-34c175944f8e671890f062d720dda4b5">¶</a><p>References: <a class="reference external" href="http://www.sqlalchemy.org/trac/ticket/151">#151</a></p>
646
<li><p id="change-0.2.3-6"><span class="target" id="change-b4cca2cf5feda5cac2048fa0b4c4f32c"></span>fixed bug where tables with schema names werent getting indexed in
647
the MetaData object properly<a class="changeset-link headerlink reference internal" href="#change-b4cca2cf5feda5cac2048fa0b4c4f32c">¶</a><p></p>
625
<li><p id="change-0.2.3-6"><span class="target" id="change-c720f31d6d377648e95acdd146d1ed90"></span>fixed bug where tables with schema names weren’t getting indexed in
626
the MetaData object properly<a class="changeset-link headerlink reference internal" href="#change-c720f31d6d377648e95acdd146d1ed90">¶</a><p></p>
650
<li><p id="change-0.2.3-7"><span class="target" id="change-b52b98c4a83fafec9295753804c3f136"></span>fixed bug where Column with redefined “key” property wasnt getting
651
type conversion happening in the ResultProxy<a class="changeset-link headerlink reference internal" href="#change-b52b98c4a83fafec9295753804c3f136">¶</a><p>References: <a class="reference external" href="http://www.sqlalchemy.org/trac/ticket/207">#207</a></p>
629
<li><p id="change-0.2.3-7"><span class="target" id="change-5f5ca83d1dd3a0599d44cfd324640ae3"></span>fixed bug where Column with redefined “key” property wasn’t getting
630
type conversion happening in the ResultProxy<a class="changeset-link headerlink reference internal" href="#change-5f5ca83d1dd3a0599d44cfd324640ae3">¶</a><p>References: <a class="reference external" href="http://www.sqlalchemy.org/trac/ticket/207">#207</a></p>
654
633
<li><p id="change-0.2.3-8"><span class="target" id="change-ecc83114559345f0a9a3eaa6df5bb4b9"></span>fixed ‘port’ attribute of URL to be an integer if present<a class="changeset-link headerlink reference internal" href="#change-ecc83114559345f0a9a3eaa6df5bb4b9">¶</a><p></p>
657
636
<li><p id="change-0.2.3-9"><span class="target" id="change-7b441f457cf77d508db40bebef05589b"></span>fixed old bug where if a many-to-many table mapped as “secondary”
658
had extra columns, delete operations didnt work<a class="changeset-link headerlink reference internal" href="#change-7b441f457cf77d508db40bebef05589b">¶</a><p></p>
637
had extra columns, delete operations didn’t work<a class="changeset-link headerlink reference internal" href="#change-7b441f457cf77d508db40bebef05589b">¶</a><p></p>
661
640
<li><p id="change-0.2.3-10"><span class="target" id="change-de389a34b53d442e9d0b3b965217ab28"></span>bugfixes for mapping against UNION queries<a class="changeset-link headerlink reference internal" href="#change-de389a34b53d442e9d0b3b965217ab28">¶</a><p></p>
664
643
<li><p id="change-0.2.3-11"><span class="target" id="change-8f30bc9cbea047626bdc2a9439e7b5d9"></span>fixed incorrect exception class thrown when no DB driver present<a class="changeset-link headerlink reference internal" href="#change-8f30bc9cbea047626bdc2a9439e7b5d9">¶</a><p></p>
667
<li><p id="change-0.2.3-12"><span class="target" id="change-24926253a5c623f41d5391b61b1bd27f"></span>added NonExistentTable exception thrown when reflecting a table
668
that doesnt exist<a class="changeset-link headerlink reference internal" href="#change-24926253a5c623f41d5391b61b1bd27f">¶</a><p>References: <a class="reference external" href="http://www.sqlalchemy.org/trac/ticket/138">#138</a></p>
646
<li><p id="change-0.2.3-12"><span class="target" id="change-f46f46103387cad34879ec24046fcf1e"></span>added NonExistentTable exception thrown when reflecting a table
647
that doesn’t exist<a class="changeset-link headerlink reference internal" href="#change-f46f46103387cad34879ec24046fcf1e">¶</a><p>References: <a class="reference external" href="http://www.sqlalchemy.org/trac/ticket/138">#138</a></p>
671
650
<li><p id="change-0.2.3-13"><span class="target" id="change-aafc1f39ed388e24a34c35773df53c20"></span>small fix to ActiveMapper regarding one-to-one backrefs, other
785
764
of scope.<a class="changeset-link headerlink reference internal" href="#change-d9a9007ac13e6499a26f44a500fa7c5d">¶</a><p></p>
788
<li><p id="change-0.2.1-5"><span class="target" id="change-0e86b706f331eeffef0eb93607dae7ac"></span>placeholder dispose() method added to SingletonThreadPool, doesnt
789
do anything yet<a class="changeset-link headerlink reference internal" href="#change-0e86b706f331eeffef0eb93607dae7ac">¶</a><p></p>
767
<li><p id="change-0.2.1-5"><span class="target" id="change-d110ae3a45ebc503ac45c8483c5bfc3d"></span>placeholder dispose() method added to SingletonThreadPool, doesn’t
768
do anything yet<a class="changeset-link headerlink reference internal" href="#change-d110ae3a45ebc503ac45c8483c5bfc3d">¶</a><p></p>
792
<li><p id="change-0.2.1-6"><span class="target" id="change-3e7c69b421994f1dadc810fa3d8c270c"></span>rollback() is automatically called when an exception is raised,
793
but only if theres no transaction in process (i.e. works more like
794
autocommit).<a class="changeset-link headerlink reference internal" href="#change-3e7c69b421994f1dadc810fa3d8c270c">¶</a><p></p>
771
<li><p id="change-0.2.1-6"><span class="target" id="change-25946e86814860e1bc890e293c2ab638"></span>rollback() is automatically called when an exception is raised,
772
but only if there’s no transaction in process (i.e. works more like
773
autocommit).<a class="changeset-link headerlink reference internal" href="#change-25946e86814860e1bc890e293c2ab638">¶</a><p></p>
797
776
<li><p id="change-0.2.1-7"><span class="target" id="change-7d94f3def3f5ff26407726dd433da955"></span>fixed exception raise in sqlite if no sqlite module present<a class="changeset-link headerlink reference internal" href="#change-7d94f3def3f5ff26407726dd433da955">¶</a><p></p>
855
834
<li><p id="change-0.2.0-7"><span class="target" id="change-3d8b1afa02b15535632392487a516dde"></span>“oid” system has been totally moved into compile-time behavior;
856
835
if they are used in an order_by where they are not available, the order_by
857
doesnt get compiled, fixes<a class="changeset-link headerlink reference internal" href="#change-3d8b1afa02b15535632392487a516dde">¶</a><p>References: <a class="reference external" href="http://www.sqlalchemy.org/trac/ticket/147">#147</a></p>
836
doesn’t get compiled, fixes<a class="changeset-link headerlink reference internal" href="#change-3d8b1afa02b15535632392487a516dde">¶</a><p>References: <a class="reference external" href="http://www.sqlalchemy.org/trac/ticket/147">#147</a></p>
860
839
<li><p id="change-0.2.0-8"><span class="target" id="change-8bf8612ef556f0bf755fe718681e6980"></span>overhaul to packaging; “mapping” is now “orm”, “objectstore” is now