使用python json对象插入查询

2024-09-29 21:38:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python很陌生。。我有一个json对象。下面是代码

jsondata = json.loads(data)

jsondata看起来像这样

{u'approvalId': u'0', u'size-1': 202, u'indRate': u'0.003', u'orderNo': u'ROMA2-20200508-00001', u'brokerSymbol': u'', u'requestedFor': u'r101115', u'aggUnit': u'', u'repId': u'O70', u'noGoodShares': 0, u'requestedBy': u'r101115', u'status': 4, u'timestamp': u'May 08, 2020 02:29:52', u'symbol': u'IBM', u'broker': u'APOC RT', u'usedShares': 3, u'pubKey': u'O70.ROMA2-20200508-00001', u'locateBrokerId': u'APOC', u'goodShares': 500, u'rtLeafId': 900059, u'availableShares': 497, u'requestedShares': 500, u'brokerOrderNo': u'', u'indicativeRate': 0.0030000000000000001, u'pendingShares': 0}

我想在sybase数据库中插入这些信息,而不是所有的一些细节。下面插入我尝试过的语句

cur = conn.cursor()

sql = "INSERT into RT24.dbo.SLOrd(status, rtLeafId, orderNo, repId, symbol, broker, timestamp, modifiedTime) VALUES (d["status"], d["rtLeafId"], d["orderNo"], d["repId"], d["symbol"\
], d["broker"], d["timestamp"], d["timestamp"])"

cur.execute(sql)
conn.commit()

有人能帮我吗我该怎么做

问候,, 普拉尚特


Tags: jsonstatusbrokerconnsymboltimestampjsondatacur
1条回答
网友
1楼 · 发布于 2024-09-29 21:38:27
<>你不能把变量放在这样的字符串中间。您应该在SQL字符串中放置占位符,然后提供一个参数字典作为cur.execute()的第二个参数

sql = """INSERT into RT24.dbo.SLOrd(status, rtLeafId, orderNo, repId, symbol, broker, timestamp, modifiedTime) 
        VALUES (@status, @rtLeafId, @orderNo, @repId, @symbol, @broker, @timestamp, @timestamp)"""
cur.execute(sql, {"@status": d["status"], "@rtLeafId": d["rtLeafId"], "@orderNo": d["orderNo"], "@repId": d["repId"], "@symbol": d["symbol"], "@broker": d["broker"], "@timestamp": d["timestamp"], "@timestamp": d["timestamp"]})

请参见python sybase manualexecute()方法的描述

如果这不起作用,可以使用字符串格式,但是如果不清理数据,就有可能进行SQL注入

sql = f"""INSERT into RT24.dbo.SLOrd(status, rtLeafId, orderNo, repId, symbol, broker, timestamp, modifiedTime) 
        VALUES ({d["status"]}, {d["rtLeafId"]}, '{d["orderNo"]}', '{d["repId"]}', '{d["symbol"]}', '{d["broker"]}', '{d["timestamp"]}', '{d["timestamp"]}')"""
cur.execute(sql)

相关问题 更多 >

    热门问题