[Sqlalchemy-commits] [1006] sqlalchemy/trunk/doc/build/content/datamapping.myt: made 'assign_mapper'
Brought to you by:
zzzeek
From: <co...@sq...> - 2006-02-22 07:39:11
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><style type="text/css"><!-- #msg dl { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; } #msg dt { float: left; width: 6em; font-weight: bold; } #msg dt:after { content:':';} #msg dl, #msg dt, #msg ul, #msg li { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; } #msg dl a { font-weight: bold} #msg dl a:link { color:#fc3; } #msg dl a:active { color:#ff0; } #msg dl a:visited { color:#cc6; } h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; } #msg pre { overflow: auto; background: #ffc; border: 1px #fc0 solid; padding: 6px; } #msg ul, pre { overflow: auto; } #patch { width: 100%; } #patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;} #patch .propset h4, #patch .binary h4 {margin:0;} #patch pre {padding:0;line-height:1.2em;margin:0;} #patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;} #patch .propset .diff, #patch .binary .diff {padding:10px 0;} #patch span {display:block;padding:0 10px;} #patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;} #patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;} #patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;} #patch .lines, .info {color:#888;background:#fff;} --></style> <title>[1006] sqlalchemy/trunk/doc/build/content/datamapping.myt: made 'assign_mapper' doc more explicit</title> </head> <body> <div id="msg"> <dl> <dt>Revision</dt> <dd>1006</dd> <dt>Author</dt> <dd>zzzeek</dd> <dt>Date</dt> <dd>2006-02-20 10:34:02 -0600 (Mon, 20 Feb 2006)</dd> </dl> <h3>Log Message</h3> <pre>made 'assign_mapper' doc more explicit added doc for overriding properties</pre> <h3>Modified Paths</h3> <ul> <li><a href="#sqlalchemytrunkdocbuildcontentdatamappingmyt">sqlalchemy/trunk/doc/build/content/datamapping.myt</a></li> </ul> </div> <div id="patch"> <h3>Diff</h3> <a id="sqlalchemytrunkdocbuildcontentdatamappingmyt"></a> <div class="modfile"><h4>Modified: sqlalchemy/trunk/doc/build/content/datamapping.myt (1005 => 1006)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/trunk/doc/build/content/datamapping.myt 2006-02-20 16:13:54 UTC (rev 1005) +++ sqlalchemy/trunk/doc/build/content/datamapping.myt 2006-02-20 16:34:02 UTC (rev 1006) </span><span class="lines">@@ -58,6 +58,7 @@ </span><span class="cx"> </span><span class="cx"> </span><span class="cx"> </&> </span><ins>+ <&|doclib.myt:item, name="attaching", description="Attaching Mappers to their Class"&> </ins><span class="cx"> <p>For convenience's sake, the Mapper can be attached as an attribute on the class itself as well:</p> </span><span class="cx"> <&|formatting.myt:code&> </span><span class="cx"> User.mapper = mapper(User, users) </span><span class="lines">@@ -70,6 +71,25 @@ </span><span class="cx"> userlist = User.select_by(user_id=12) </span><span class="cx"> </&> </span><span class="cx"> <p>Other methods of associating mappers and finder methods with their corresponding classes, such as via common base classes or mixins, can be devised as well. SQLAlchemy does not aim to dictate application architecture and will always allow the broadest variety of architectural patterns, but may include more helper objects and suggested architectures in the future.</p> </span><ins>+ </&> + <&|doclib.myt:item, name="overriding", description="Overriding Properties"&> + <p>A common request is the ability to create custom class properties that override the behavior of setting/getting an attribute. Currently, the easiest way to do this in SQLAlchemy is just how its done normally; define your attribute with a different name, such as "_attribute", and use a property to get/set its value. The mapper just needs to be told of the special name:</p> + <&|formatting.myt:code&> + class MyClass(object): + def _set_email(self, email): + self._email = email + def _get_email(self, email): + return self._email + email = property(_get_email, _set_email) + + m = mapper(MyClass, mytable, properties = { + # map the '_email' attribute to the "email" column + # on the table + '_email': mytable.c.email + }) + </&> + <p>In a later release, SQLAlchemy will also allow _get_email and _set_email to be attached directly to the "email" property created by the mapper, and will also allow this association to occur via decorators.</p> + </&> </ins><span class="cx"> </&> </span><span class="cx"> <&|doclib.myt:item, name="selecting", description="Selecting from a Mapper" &> </span><span class="cx"> <p>There are a variety of ways to select from a mapper. These range from minimalist to explicit. Below is a synopsis of the these methods:</p> </span></span></pre> </div> </div> </body> </html> |