如何在没有数据格式值的情况下使用Python从HANA DB获取数据?

如何在没有数据格式值的情况下使用Python从HANA DB获取数据?,python,database,hana,Python,Database,Hana,我尝试使用pyhdb模块从HANA DB获取数据,下面是代码: class HANA: def __init__(self): self.conn = pyhdb.connect( host="#", port=30015, user="#", password="#", autocommit=False ) def getMARA(self): cursor = self.conn.curso

我尝试使用
pyhdb
模块从HANA DB获取数据,下面是代码:

class HANA:
def __init__(self):
    self.conn = pyhdb.connect(
        host="#", port=30015, user="#", password="#", autocommit=False
    )

def getMARA(self):
    cursor = self.conn.cursor()
    cursor.execute('SELECT * FROM "odw.sup.cmn.sl4.ssv::SUP_MBEW" limit 100')
    result = cursor.fetchall()
    return result

C = HANA()
rst = C.getMARA()
for i in rst:
    print(i)
但结果包括数据格式,例如

('400', '02.098.0380', '2007', '', '', Decimal('0'), '', datetime.datetime(2015, 2, 8, 12, 24, 35), Decimal('0'), 'V', Decimal('0'), Decimal('0'), Decimal('1'), '9103', Decimal('0'), Decimal('0'), Decimal('0'), 'V', Decimal('0'), Decimal('0'), Decimal('1'), '9103', Decimal('0'), Decimal('0'), Decimal('0'), 'V', Decimal('0'), Decimal('0'), Decimal('1'), '9103', Decimal('0'), '2010', '03', '', Decimal('0'), '00000000', Decimal('0'), '00000000', Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), '00000000', '00000000', '00000000', '000000', '000000', '000000', '', '', '', '', '', '', Decimal('0'), Decimal('0'), '00', 'BG', '000115393025', '000115393026', '', '', '', '00', '00', '00', '', '', '000', '000', '000', '0000', '0000', '0000', '', Decimal('0'), '', '', Decimal('0'), Decimal('0'), 'X', '', '', '00000000', '', Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0'), '', '', '', '', '', '', '', '', '', Decimal('0'), '', '', '', '', '', '', '2132')

我如何才能获得带有十进制和日期时间符号的数据,而只是数据值?

fetchall
返回元组列表,因此打印每一行将以元组定义的格式打印。要将其转换为字符串,请使用打印

def打印光标(cur): res=cur.fetchall() colnames=[i[0]表示当前描述中的i] 打印(*colnames,sep=',') 对于r in res: 打印(*r,sep=',') >>>execute(“selecttop3o.*,cast(1作为十进制(10,3))作为dec_示例,current_timestamp作为tstmp_示例,从对象中作为o,其中schema_name='SYS') >>>打印光标(光标) 对象类别、模式名称、对象名称、对象类型、对象OID、DEC示例、TSTMP示例 无,系统,摘要,表,189055749,1.0002020-11-18 02:32:08.755000 无,系统,适配器,表,1395238,1.0002020-11-18 02:32:08.755000 无,系统,适配器功能,表,1395249,1.0002020-11-18 02:32:08.755000
但这只是为了印刷。要处理数据,您需要正确的数据类型,因此不需要额外的转换。

Decimal('al('0'),Decimal('0'))
看起来是无效值,字符串没有正确引用。请复制并粘贴您的结果。“格式”是什么意思?@astentx我已经把完整的结果放在了问题中。格式意味着数据的类型,比如字符串、整数、布尔值,非常感谢!我现在可以在没有数据类型的情况下获取返回值,但是如何将获取数据上载到其他数据库?似乎我只能打印,但无法将数据存储在列表中或将数据转换为字符串。以下是结果中r的代码:
:print(*r,sep=“”,“”)
,以下是结果:
0000743188XX','REP622653/XX','20201121','ROR1010071/1RXX','1234','610
,我尝试使用list来存储,以下是代码:
rst=[]rst.append(*r)
,但它会弹出错误:TypeError:append()只接受一个参数(给定6个)@EricGong您希望在结果集中附加什么?请详细描述您的问题。此外,您还应该再次阅读有关解包的内容,因为错误消息非常清楚地描述了错误。