我正试图通过在pyq中运行以下代码将数据上传到一个张开的kdb数据库中。。。
from bittrex.bittrex import Bittrex, API_V2_0
from datetime import datetime
import time
from pyq import q, K
get_bittrex = Bittrex(None, None)
starttime = time.time()
q.set(':db/alpha/', q('.Q.en', ':db', q('([]Name:`$(); Ask:`float$(); Bid:`float$(); Last:`float$(); Volume:`float$(); Time:`timestamp$())')))
while True:
market_result = get_bittrex.get_market_summaries()['result']
for res in market_result:
market_name = res['MarketName']
ask = float(res['Ask'])
bid = float(res['Bid'])
last = float(res['Last'])
volume = float(res['Volume'])
dt = res['TimeStamp']
if market_name in ['USDT-BTC', 'USDT-ETH', 'USDT-LTC', 'USDT-XRP', 'USDT-NEO', 'USDT-BCC', 'USDT-ZEC', 'USDT-XMR', 'USDT-DASH']:
ts = datetime.strptime(dt, '%Y-%m-%dT%H:%M:%S.%f')
data = [market_name[5:], ask, bid, last, volume, ts]
q.upsert(':db/alpha/', q('.Q.en', ':db', [data]))
q.get(':db/alpha/').show()
time.sleep(30.0)
它不断抛出相同的错误:
_k.error: type
. 我认为这是因为我没有在我的
q.upsert
.
当我在未展开的表上使用相同的脚本时,效果很好。。。
from bittrex.bittrex import Bittrex, API_V2_0
from datetime import datetime
import time
from pyq import q, K
get_bittrex = Bittrex(None, None)
starttime = time.time()
q.set(':alpha', q('([]Name:`$(); Ask:`float$(); Bid:`float$(); Last:`float$(); Volume:`float$(); Time:`timestamp$())'))
while True:
market_result = get_bittrex.get_market_summaries()['result']
for res in market_result:
market_name = res['MarketName']
ask = float(res['Ask'])
bid = float(res['Bid'])
last = float(res['Last'])
volume = float(res['Volume'])
dt = res['TimeStamp']
if market_name in ['USDT-BTC', 'USDT-ETH', 'USDT-LTC', 'USDT-XRP', 'USDT-NEO', 'USDT-BCC', 'USDT-ZEC', 'USDT-XMR', 'USDT-DASH']:
ts = datetime.strptime(dt, '%Y-%m-%dT%H:%M:%S.%f')
data = [market_name[5:], ask, bid, last, volume, ts]
q.upsert(':alpha', [data])
q.get(':alpha').show()
time.sleep(30.0)
而且,当我尝试同时手动设置和升级两行时,它会返回预期的结果。。。
(pyq36-64) ⯠pyq
Python 3.6.3 (default, Nov 30 2017, 16:33:45)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> q.set(':db/alpha/', q('.Q.en', ':db', q('([]Name:`$(); Ask:`float$(); Bid:`float$(); Last:`float$(); Volume:`float$(); Time:`timestamp$())')))
k('`:db/alpha/')
>>> q.upsert(':db/alpha/', q('.Q.en', ':db', q('([]Name:`f`g; Ask:70.0 80.0; Bid:60.0 70.0; Last:50.0 60.0; Volume:645.32 745.33; Time:2017.12.19D19:10:09.697000000 2017.12.19D19:10:09.697000000)')))
k('`:db/alpha/')
>>> q.get(':db/alpha/').show()
Name Ask Bid Last Volume Time
------------------------------------------------------
f 70 60 50 645.32 2017.12.19D19:10:09.697000000
g 80 70 60 745.33 2017.12.19D19:10:09.697000000
>>> q()
q)\ls -l -a db/alpha
"total 64"
"drwxr-xr-x 10 marrowgari staff 340 Dec 19 16:42 ."
"drwxr-xr-x 4 marrowgari staff 136 Dec 19 15:59 .."
"-rw-r--r-- 1 marrowgari staff 38 Dec 19 16:42 .d"
"-rw-r--r-- 1 marrowgari staff 32 Dec 19 16:42 Ask"
"-rw-r--r-- 1 marrowgari staff 32 Dec 19 16:42 Bid"
"-rw-r--r-- 1 marrowgari staff 32 Dec 19 16:42 Last"
"-rw-r--r-- 1 marrowgari staff 32 Dec 19 16:42 Name"
"-rw-r--r-- 1 marrowgari staff 32 Dec 19 16:42 Time"
"-rw-r--r-- 1 marrowgari staff 16 Dec 19 16:19 Vol"
"-rw-r--r-- 1 marrowgari staff 32 Dec 19 16:42 Volume"
q)
如何向上插入变量
data
从上面的代码到八字表?
q.set(':db/alpha/', q('.Q.en', ':db', q('([]Name:`$(); Ask:`float$(); Bid:`float$(); Last:`float$(); Volume:`float$(); Time:`timestamp$())')))
q.upsert(':db/alpha/', q('.Q.en', ':db', [data]))