python websocket parsing mysql

Всем привет! Помогите с кодом. Вопрос такой: могу ли я как то транслировать эти данные в mysql (mysql не принципиален, можно и другую БД)? Данные идут ("ask":3814.18,"bid":3813.18 "epoch":1605111582 "quote":3813.68,"symbol":"R_100"). Как их отфильтровать и импортировать в БД не пойму, может я могу как то с ними еще работать вывести в CSV? Перелопатил уже много кода и не могу понять в какую сторону двигаться.

import websocket

import json

websocket.enableTrace(True)

apiUri = "wss://ws.binaryws.com/websockets/v3?app_id=1089"

Object = {'ticks':'R_100'}

def ws_open(ws):
    json_data = json.dumps(Object)
    ws.send(json_data)

def ws_message(ws, message):
    print('ticks update: %s' % message)

ws = websocket.WebSocketApp(apiUri,on_message = ws_message)

ws.on_open = ws_open
ws.run_forever()

получаю ответ

-— request header —-
GET /websockets/v3?app_id=1089 HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: ws.binaryws.com
Origin: http://ws.binaryws.com
Sec-WebSocket-Key: N9Wt6WRmwv420L/KZbIPBQ==
Sec-WebSocket-Version: 13

-— response header —-
HTTP/1.1 101 Switching Protocols
Date: Wed, 11 Nov 2020 16:19:41 GMT
Content-Length: 0
Connection: upgrade
Set-Cookie: __cfduid=de8bd711cb15530a0bfe128ee60ee5a8b1605111581; expires=Fri, 11-Dec-20 16:19:41 GMT; path=/; domain=.binaryws.com; HttpOnly; SameSite=Lax
Content-Language: en
Upgrade: websocket
Sec-WebSocket-Accept: mIwXeHSTBPUuIdoMtoy7h6FYwNs=
CF-Cache-Status: DYNAMIC
cf-request-id: 0659b4214700007b53829d8000000001
Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Server: cloudflare
CF-RAY: 5f09561539857b53-DME


send: b'\x81\x92b\xa7\xfa\xb4\x19\x85\x8e\xdd\x01\xcc\x89\x96X\x87\xd8\xe6=\x96\xca\x84@\xda'
ticks update: {"echo_req":{"ticks":"R_100"},"msg_type":"tick","subscription":{"id":"9e68208d-1efe-5ed1-1735-fb2d6d264f27"},"tick":{"ask":3814.18,"bid":3813.18,"epoch":1605111582,"id":"9e68208d-1efe-5ed1-1735-fb2d6d264f27","pip_size":2,"quote":3813.68,"symbol":"R_100"}}

сейчас имею такой ответ,а если точнее их один двух видов, но в ответе они в одну строку,так как внес еще строку websocket.debug(json.dumps(message)) в ws_message в целях эксперимента

ticks update: {"echo_req":{"ticks":"R_100"},"msg_type":"tick","subscription":{"id":"99d4512b-fd98-85ea-9417-2494ee2a3857"},"tick":{"ask":3541.87,"bid":3541.07,"epoch":1606484220,"id":"99d4512b-fd98-85ea-9417-2494ee2a3857","pip_size":2,"quote":3541.47,"symbol":"R_100"}}
"{\"echo_req\":{\"ticks\":\"R_100\"},\"msg_type\":\"tick\",\"subscription\":{\"id\":\"99d4512b-fd98-85ea-9417-2494ee2a3857\"},\"tick\":{\"ask\":3541.87,\"bid\":3541.07,\"epoch\":1606484220,\"id\":\"99d4512b-fd98-85ea-9417-2494ee2a3857\",\"pip_size\":2,\"quote\":3541.47,\"symbol\":\"R_100\"}}"
def ws_message(ws, message):
    print('ticks update: %s' % message)
    websocket.debug(json.dumps(message))

Ответы (2 шт):

Автор решения: Дмитрий Бекренёв

мне подсказывал один человек что надо делать return так как типо туда нечего не возвращается но если я делаю

return ws_message(ws, message)

код спамит с задержкой в милисекунду(образно) одну и туже строку типа как ответ выше и падает с такими словами

    Python runtime state: initialized
    
    Thread 0x00000b74 (most recent call first):
      File "C:\Python39\lib\threading.py", line 316 in wait
      File "C:\Python39\lib\threading.py", line 574 in wait
      File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\pydevd.py", line 228 in _on_run
      File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_comm.py", line 168 in run
      File "C:\Python39\lib\threading.py", line 950 in _bootstrap_inner
      File "C:\Python39\lib\threading.py", line 908 in _bootstrap
    
    Thread 0x00003d98 (most recent call first):
      File "C:\Python39\lib\threading.py", line 316 in wait
      File "C:\Python39\lib\threading.py", line 574 in wait
      File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\pydevd.py", line 182 in _on_run
      File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_comm.py", line 168 in run
      File "C:\Python39\lib\threading.py", line 950 in _bootstrap_inner
      File "C:\Python39\lib\threading.py", line 908 in _bootstrap
    
    Thread 0x00003c44 (most recent call first):
      File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_comm.py", line 282 in _read_line
      File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_comm.py", line 300 in _on_run
      File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_comm.py", line 168 in run
      File "C:\Python39\lib\threading.py", line 950 in _bootstrap_inner
      File "C:\Python39\lib\threading.py", line 908 in _bootstrap
    
    Thread 0x00002690 (most recent call first):
      File "C:\Python39\lib\threading.py", line 316 in wait
      File "C:\Python39\lib\queue.py", line 180 in get
      File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_comm.py", line 411 in _on_run
      File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_comm.py", line 168 in run
      File "C:\Python39\lib\threading.py", line 950 in _bootstrap_inner
      File "C:\Python39\lib\threading.py", line 908 in _bootstrap
    
    Current thread 0x00003ec4 (most recent call first):
      File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_trace_dispatch_regular.py", line 368 in __call__
      File "C:\Python39\lib\logging\__init__.py", line 425 in _format
      File "C:\Python39\lib\logging\__init__.py", line 430 in format
      File "C:\Python39\lib\logging\__init__.py", line 631 in formatMessage
      File "C:\Python39\lib\logging\__init__.py", line 662 in format
      File "C:\Python39\lib\logging\__init__.py", line 923 in format
      File "C:\Python39\lib\logging\__init__.py", line 1079 in emit
      File "C:\Python39\lib\logging\__init__.py", line 948 in handle
      File "C:\Python39\lib\logging\__init__.py", line 1649 in callHandlers
      File "C:\Python39\lib\logging\__init__.py", line 1587 in handle
      File "C:\Python39\lib\logging\__init__.py", line 1577 in _log
      File "C:\Python39\lib\logging\__init__.py", line 1422 in debug
      File "C:\Python39\lib\site-packages\websocket\_logging.py", line 68 in debug
      File "C:\Users\NoName\source\repos\PythonApplication2\PythonApplication2\PythonApplication2.py", line 18 in ws_message
      File "C:\Users\NoName\source\repos\PythonApplication2\PythonApplication2\PythonApplication2.py", line 19 in ws_message

если делаю так то получаю две строки сообщения и поидее одна из них нормальный json
    def ws_message(ws, message):
        parser = json.loads(message)
        json_eho = json.dumps(parser)
        print(str(json_eho))
        print(str(parser))
        return (parser)

если делаю return(json_eho) ответы меняю кавычки с одних на другие и все

{'echo_req': {'ticks': 'R_100'}, 'msg_type': 'tick', 'subscription': {'id': 'cd11f737-8235-8db2-8c5f-a57d9e16eabd'}, 'tick': {'ask': 3320.55, 'bid': 3319.75, 'epoch': 1606520352, 'id': 'cd11f737-8235-8db2-8c5f-a57d9e16eabd', 'pip_size': 2, 'quote': 3320.15, 'symbol': 'R_100'}}
    
{"echo_req":{"ticks":"R_100"},"msg_type":"tick","subscription":"id":"cd11f737-8235-8db2-8c5fa57d9e16eabd"},"tick":"ask":3320.55,"bid":3319.75,"epoch":1606520352,"id":"cd11f737-8235-8db2-8c5f-57d9e16eabd","pip_size":2,"quote":3320.15,"symbol":"R_100"}}

как передать эту строку дальше чтобы я хотя бы мог сделать print(websocket_message) вне функции

→ Ссылка
Автор решения: Дмитрий Бекренёв

Дошёл до такого варианта)) всё в переменных, не понимаю могу ли я как то передать строку в mysql и распарсить её в какую нить таблицу, или сначала её надо записать в файл, а потом обрабатывать файл, главное что у меня уже всё не в потоке

import json
import websocket

from websocket import create_connection

websocket.enableTrace(True)

ws = create_connection('wss://ws.binaryws.com/websockets/v3?app_id=1089')

ws.send(json.dumps({'ticks': 'R_100'}))

result = ws.recv()

parser = json.loads(result)

json_eho = json.dumps(parser)

print(json_eho)

получаю ответ

{"echo_req": {"ticks": "R_100"}, "msg_type": "tick", "subscription": {"id": "0e37ccf0-3ed2-ad75-f28a-47a2bedd1ac8"}, "tick": {"ask": 3405.39, "bid": 3404.59, "epoch": 1606578100, "id": "0e37ccf0-3ed2-ad75-f28a-47a2bedd1ac8", "pip_size": 2, "quote": 3404.99, "symbol": "R_100"}}
→ Ссылка