xml-rpc - adodb - None type - DateTime type

D

dcrespo

Hi to all,

I have functions defined in an xml-rpc server. Some functions query to
a Postgres database (using adodb) and return its recordset. So, if some
xml-rpc client runs the mentioned function, it will retrieve the
recordset. The problem is that if a retrieved field has the Null value
or the Date value (DateTime Database format), then, the retrieved
recordset in the python program will have the 'None' value or the
DateTime type object value.

xml-rpc isn't able to accept any type of value, so I have to solve it.

I can replace all None values with the string 'Null', there's no
problem, but I can't detect the DateTime type object I retrieve from
the database.

I have something like this:
def xmlrpc_function():
conn = adodb.NewADOConnection('postgres')
conn.Connect(host,user,password,database)
rs = conn.Exec("select * from table")
result = []
i = 0
while not rs.EOF:
row = rs.GetRowAssoc(False)
for key, value in row.items():
if value==None:
row[key]='Null'
result.append(row)
i = i + 1
rs.MoveNext()
rs.Close()

print result
return result

The problem here is that if row[key] == <type 'DateTime' object
etc...>, then I don't know what to do for detect it and make the
appropriate change to string.

Console output:
[{'name': 'Null', 'date': <DateTime object for '2005-09-01 00:00:00.00'
at 1515f60>}]

If you consult the python manual, you'll see that there's no 'DateTime'
type object, so I can't do something like:

if value==DateTimeType:
...

I only need to know which type of data is a field for make the change
according to what can I pass through the xml-rpc.

Any help?

Thanks
 
I

infidel

I can replace all None values with the string 'Null', there's no
problem, but I can't detect the DateTime type object I retrieve from
the database.

I have something like this:
def xmlrpc_function():
conn = adodb.NewADOConnection('postgres')
conn.Connect(host,user,password,database)
rs = conn.Exec("select * from table")
result = []
i = 0
while not rs.EOF:
row = rs.GetRowAssoc(False)
for key, value in row.items():
if value==None:
row[key]='Null'
result.append(row)
i = i + 1
rs.MoveNext()
rs.Close()

print result
return result

The problem here is that if row[key] == <type 'DateTime' object
etc...>, then I don't know what to do for detect it and make the
appropriate change to string.

Console output:
[{'name': 'Null', 'date': <DateTime object for '2005-09-01 00:00:00.00'
at 1515f60>}]

If you consult the python manual, you'll see that there's no 'DateTime'
type object, so I can't do something like:

if value==DateTimeType:
...

I only need to know which type of data is a field for make the change
according to what can I pass through the xml-rpc.

Well, there is the possibility of passing null values through xml-rpc.
I believe there is an optional keyword argument in some of the
xmlrpclib functions to allow it. Basically it translates None to
<nil/> in the xml.

The DateTime type must be defined somewhere. Is it an adodb type? If
so, you could do something like this:

if type(value) == adodb.DateTime:
...
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,226
Members
46,815
Latest member
treekmostly22

Latest Threads

Top