[Sqlalchemy-commits] [1273] sqlalchemy/trunk/lib/sqlalchemy/databases/postgres.py: added patch for m
Brought to you by:
zzzeek
From: <co...@sq...> - 2006-04-11 16:58:38
|
<!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>[1273] sqlalchemy/trunk/lib/sqlalchemy/databases/postgres.py: added patch for mxDateTime support, [ticket:5], courtesy jk...@ka...</title> </head> <body> <div id="msg"> <dl> <dt>Revision</dt> <dd>1273</dd> <dt>Author</dt> <dd>zzzeek</dd> <dt>Date</dt> <dd>2006-04-11 11:58:15 -0500 (Tue, 11 Apr 2006)</dd> </dl> <h3>Log Message</h3> <pre>added patch for mxDateTime support, [ticket:5], courtesy jk...@ka...</pre> <h3>Modified Paths</h3> <ul> <li><a href="#sqlalchemytrunklibsqlalchemydatabasespostgrespy">sqlalchemy/trunk/lib/sqlalchemy/databases/postgres.py</a></li> </ul> </div> <div id="patch"> <h3>Diff</h3> <a id="sqlalchemytrunklibsqlalchemydatabasespostgrespy"></a> <div class="modfile"><h4>Modified: sqlalchemy/trunk/lib/sqlalchemy/databases/postgres.py (1272 => 1273)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/trunk/lib/sqlalchemy/databases/postgres.py 2006-04-10 05:44:03 UTC (rev 1272) +++ sqlalchemy/trunk/lib/sqlalchemy/databases/postgres.py 2006-04-11 16:58:15 UTC (rev 1273) </span><span class="lines">@@ -4,7 +4,7 @@ </span><span class="cx"> # This module is part of SQLAlchemy and is released under </span><span class="cx"> # the MIT License: http://www.opensource.org/licenses/mit-license.php </span><span class="cx"> </span><del>-import sys, StringIO, string, types, re </del><ins>+import datetime, sys, StringIO, string, types, re </ins><span class="cx"> </span><span class="cx"> import sqlalchemy.util as util </span><span class="cx"> import sqlalchemy.sql as sql </span><span class="lines">@@ -17,6 +17,11 @@ </span><span class="cx"> import information_schema as ischema </span><span class="cx"> </span><span class="cx"> try: </span><ins>+ import mx.DateTime.DateTime as mxDateTime +except: + mxDateTime = None + +try: </ins><span class="cx"> import psycopg2 as psycopg </span><span class="cx"> #import psycopg2.psycopg1 as psycopg </span><span class="cx"> except: </span><span class="lines">@@ -43,15 +48,27 @@ </span><span class="cx"> return "TIMESTAMP" </span><span class="cx"> class PG1DateTime(sqltypes.DateTime): </span><span class="cx"> def convert_bind_param(self, value, engine): </span><del>- # TODO: perform appropriate postgres1 conversion between Python DateTime/MXDateTime - # this one doesnt seem to work with the "emulation" mode </del><span class="cx"> if value is not None: </span><ins>+ if isinstance(value, datetime.datetime): + seconds = float(str(value.second) + "." + + str(value.microsecond)) + mx_datetime = mxDateTime(value.year, value.month, value.day, + value.hour, value.minute, + seconds) + return psycopg.TimestampFromMx(mx_datetime) </ins><span class="cx"> return psycopg.TimestampFromMx(value) </span><span class="cx"> else: </span><span class="cx"> return None </span><span class="cx"> def convert_result_value(self, value, engine): </span><del>- # TODO: perform appropriate postgres1 conversion between Python DateTime/MXDateTime - return value </del><ins>+ if value is None: + return None + second_parts = str(value.second).split(".") + seconds = int(second_parts[0]) + microseconds = int(second_parts[1]) + return datetime.datetime(value.year, value.month, value.day, + value.hour, value.minute, seconds, + microseconds) + </ins><span class="cx"> def get_col_spec(self): </span><span class="cx"> return "TIMESTAMP" </span><span class="cx"> class PG2Date(sqltypes.Date): </span></span></pre> </div> </div> </body> </html> |