python - 使用 python json 对象插入查询
问题描述
我对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()
有人可以帮我我该怎么做..
问候,普拉尚特。
解决方案
您不能将变量粘贴在这样的字符串中间。您应该在 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"]})
见execute()
python-sybase手册中方法的描述
如果这不起作用,您可以使用字符串格式,但是如果您不清理数据,则可能会进行 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)
推荐阅读
- php - 使用 Twitterapiexchange 按日期搜索推文
- html - 文本太大时如何打破 col?
- binary - 可以在不需要主机系统库的情况下运行 VM/Container 吗?
- jquery - Bootstrap 4 和 Rails 6:$(...).modal 不是“.js.erb”文件中的函数(但可以在其他 .js 文件中使用?)
- c++ - C++有多少种循环?
- python - 我在波士顿房屋定价数据库上的随机梯度下降的 python 实现有什么问题?
- firebase - 实现 ListView.builder() 时这段代码有什么问题吗
- android - Cordova 上的 SSL 并防止中间人攻击
- excel - Excel VBA ProperCase 函数
- javascript - 带有“this”参数的 TypeScript 新 Array.prototype 通用函数