将数据刷入zinc
This commit is contained in:
59
main.py
Normal file
59
main.py
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
import json
|
||||||
|
import base64
|
||||||
|
import pymysql
|
||||||
|
import requests
|
||||||
|
import dotenv
|
||||||
|
|
||||||
|
CONFIG = dotenv.dotenv_values(".env")
|
||||||
|
user = "admin"
|
||||||
|
password = "Complexpass#123"
|
||||||
|
bas64encoded_creds = base64.b64encode(bytes(f"{user}:{password}", "utf-8")).decode("utf-8")
|
||||||
|
headers = {"Content-type": "application/json", "Authorization": f"Basic {bas64encoded_creds}"}
|
||||||
|
index = "images"
|
||||||
|
zinc_host = "https://zincsearch.gameui.net"
|
||||||
|
zinc_url = f"{zinc_host}/api/{index}/_doc"
|
||||||
|
|
||||||
|
# 将数据刷入zinc, 并保持同步更新
|
||||||
|
# 如果SQL中某一条数据被删除, 那么zinc中也要删除
|
||||||
|
|
||||||
|
def connect_to_mysql():
|
||||||
|
return pymysql.connect(host=CONFIG['MYSQL_HOST'], user=CONFIG['MYSQL_USER'], password=CONFIG['MYSQL_PASSWORD'], database=CONFIG['MYSQL_NAME'], cursorclass=pymysql.cursors.SSDictCursor)
|
||||||
|
|
||||||
|
# 查询已存在的数据写入zinc LIMIT 0,10
|
||||||
|
def query_data(conn):
|
||||||
|
with conn.cursor(pymysql.cursors.SSCursor) as cursor:
|
||||||
|
cursor.execute("SELECT id, text FROM web_images WHERE text!='' AND text!='[]'")
|
||||||
|
for id, text in cursor:
|
||||||
|
data = { "_id": str(id), "text": " ".join([item['text'] for item in json.loads(text)]) }
|
||||||
|
res = requests.put(zinc_url, headers=headers, data=json.dumps(data), proxies={'http': '', 'https': ''})
|
||||||
|
print("\033[1;32m{}\033[0m".format(id) if json.loads(res.text)['message'] == 'ok' else id, data['text'])
|
||||||
|
|
||||||
|
query_data(connect_to_mysql())
|
||||||
|
|
||||||
|
|
||||||
|
# TODO 数据被删除时, zinc中也要删除
|
||||||
|
# TODO 可以监听SQL日志, 一旦有数据变动, 就更新zinc
|
||||||
|
# TODO 为数据之间建立事件关联, 当删除一条图像数据时, 也要删除对应的图像
|
||||||
|
|
||||||
|
## 查询数据
|
||||||
|
#query = {
|
||||||
|
# "query": {
|
||||||
|
# "bool": {
|
||||||
|
# "must": [
|
||||||
|
# {
|
||||||
|
# "query_string": {
|
||||||
|
# "query": "City:是否"
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
# ]
|
||||||
|
# }
|
||||||
|
# },
|
||||||
|
# "sort": [
|
||||||
|
# "-@timestamp"
|
||||||
|
# ],
|
||||||
|
# "from": 0,
|
||||||
|
# "size": 100
|
||||||
|
#}
|
||||||
|
#zinc_url = zinc_host + "/es/" + index + "/_search"
|
||||||
|
#res = requests.post(zinc_url, headers=headers, data=json.dumps(query), proxies={'http': '', 'https': ''})
|
||||||
|
#print(json.dumps(json.loads(res.text), indent=4, ensure_ascii=False))
|
Reference in New Issue
Block a user