I am pulling data from a database that uses the ASCII character 254 as the delimiter. I'm stumped as to how to search the string returned for the 254 and then create dictionary based on that?
My python class
import sys
sys.path.append('C:\\IBM\\UniDK\\uojsdk\\lib\\asjava.jar')
import os.path
from asjava.uniclientlibs import UniDynArray, UniDataSet
from asjava.uniobjects import UniSession, UniFile
from asjava.uniobjects import UniSubroutineException
from asjava.uniobjects.UniObjectsTokens import AT_FM
class u2py :
def __init__ (self):
self.conn = UniSession()
def get_db(self):
""" establish a connection to Unidata """
username = 'dbuser'
password = 'SuperSecretPassword'
return self.conn.connect("host", username, password, "ACCOUNT")
def close_db(self):
""" drop connection to Unidata """
if self.conn.isActive():
self.conn.disconnect()
def open_file(self,file_name,rec):
""" open a U2 file read a record and return it """
uvfile = self.conn.open(file_name)
uvrec = uvfile.read(rec)
dataset = uvrec
uvfile.close()
return dataset
def open_field(self,file_name,rec,field):
""" open a U2 file read a record and return it """
uvfile = self.conn.open(file_name)
uvrec = uvfile.readField(rec,field)
dataset = uvrec
uvfile.close()
return dataset
Here is my code in the console:
from u2py import *
u2 = u2py()
c = u2.get_db() #creates the connection to the DB
c #actually makes the connection
rec = u2.open_file('SOFILE','SO133700')
print rec
Which then prints this to the screen:
ZZZAA■XN3■CEL■931819501■20020215■BWI/PP■■
"■" is actually a field mark chr(254)
EDIT:
When I use this:
>>>rec = u2.open_file('SOFILE','SO133699').split(chr(254))
I get this error
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'asjava.uniclientlibs.UniString' object has no attribute 'split'
EDIT and FINAL answer:
Using UniObjects Java
rec.toString().split(chr(254))
SUCCESS!!!!
your_string.split(chr(254))
, e.g.
>>> "foo\xFEbar\xFEbaz".split(chr(254))
['foo', 'bar', 'baz']
This returns a list. How to build a dictionary from this I'll leave to you, since I don't know what you want for keys and values.