> I am backing out this patch. Please resubmit with this corrected. Thanks.
> > I am running Python 1.5. Therein lies the problem... :) Since it appears you have the requirement of supporting old python versions, attached is just the pgdb.py part of the patch (with a fix for DateTime handling). It has the same functionality but certainly won't be quite as fast. Given the absence of _PyString_Join in python1.5, it's a pain to get the C variants working for all versions. The pgdb.py patch does leaves the hooks in, should someone wish to do the optimization at a later point. Elliot Lee
This commit is contained in:
parent
a7ade2bb6b
commit
d3337c6e3f
@ -260,32 +260,40 @@ class pgdbCursor:
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def _quote(x):
|
try:
|
||||||
if type(x) == types.StringType:
|
_quote = _pg.quote_fast
|
||||||
x = "'" + string.replace(
|
_quoteparams = _pg.quoteparams_fast
|
||||||
string.replace(str(x), '\\', '\\\\'), "'", "''") + "'"
|
except (NameError, AttributeError):
|
||||||
|
def _quote(x):
|
||||||
|
if type(x) == DateTime.DateTimeType:
|
||||||
|
x = str(x)
|
||||||
|
if type(x) == types.StringType:
|
||||||
|
x = "'" + string.replace(
|
||||||
|
string.replace(str(x), '\\', '\\\\'), "'", "''") + "'"
|
||||||
|
|
||||||
elif type(x) in (types.IntType, types.LongType, types.FloatType):
|
elif type(x) in (types.IntType, types.LongType, types.FloatType):
|
||||||
pass
|
pass
|
||||||
elif x is None:
|
elif x is None:
|
||||||
x = 'NULL'
|
x = 'NULL'
|
||||||
elif hasattr(x, '__pg_repr__'):
|
elif type(x) in (types.ListType, types.TupleType):
|
||||||
x = x.__pg_repr__()
|
x = '(%s)' % string.join(map(lambda x: str(_quote(x)), x), ',')
|
||||||
else:
|
elif hasattr(x, '__pg_repr__'):
|
||||||
raise InterfaceError, 'do not know how to handle type %s' % type(x)
|
x = x.__pg_repr__()
|
||||||
|
else:
|
||||||
|
raise InterfaceError, 'do not know how to handle type %s' % type(x)
|
||||||
|
|
||||||
return x
|
return x
|
||||||
|
|
||||||
def _quoteparams(s, params):
|
def _quoteparams(s, params):
|
||||||
if hasattr(params, 'has_key'):
|
if hasattr(params, 'has_key'):
|
||||||
x = {}
|
x = {}
|
||||||
for k, v in params.items():
|
for k, v in params.items():
|
||||||
x[k] = _quote(v)
|
x[k] = _quote(v)
|
||||||
params = x
|
params = x
|
||||||
else:
|
else:
|
||||||
params = tuple(map(_quote, params))
|
params = tuple(map(_quote, params))
|
||||||
|
|
||||||
return s % params
|
return s % params
|
||||||
|
|
||||||
### connection object
|
### connection object
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user