Python 批量操作 數據庫的記錄

#  1. ES批量操作

from elasticsearch5 import Elasticsearch, helpers
es = Elasticsearch([{"host": ELASTIC_SEARCH_IP, "port": 9200, "timeout": 1500}])
## 批量查詢
es_result = helpers.scan(
            client=es,
            query=body,
            scroll='5m',  # 5m表示分鐘, y-年M:月,w周,d天,h小時m分鐘,s秒
            index=idx,
            doc_type='news',
            timeout="5m"  # timeout
        )

## 批量插入

action = {
            "_index": "idx",
            "_type": "news",
            "_id": new_id,
            "_source": line["_source"]  # 部分字段更新使用doc,全字段更新使用_source
        }

actions.append(action)
result_es = helpers.bulk(es, actions, stats_only=True, raise_on_error=False, refresh=True)

## 批量修改
1.相同數據的統一修改
updateBody = {
        "query":{
            "range":{
              "write_date": {
                "gte": "2019-01-15 12:30:17",
                "lte": "now"
              }
              }
        },
    "script": {
        "inline": "ctx._source.index = params.index",
        "params": {
            "index": 211
        },
        "lang":"painless"
 
    }
}
es_client.update_by_query(index="log_index",doc_type='log_index',body=updateBody)

## 批量在Python中的拼接格式,除了delete之外,其他的都是兩句對應一個操作
## 第一句用來定位什麼操作,第二句是操作成什麼樣子。
doc = [
    {'update':{'_index':'ecommerce','_id':'11'}},
    {'doc':{'price':1314}},
    {'update': {'_index': 'ecommerce', '_id': '1'}},
    {'doc': {'price': 7758}},
]
result = es.bulk(body=doc, index="ecommerce")


es 批量操作詳細講
如何使用python對ES進行批量更新操作

## mongo批量操作
import pymongo
from pymongo import UpdateOne, InsertOne
mong_cient = pymongo.MongoClient(host=MONGODB_IP, port=MONGODB_PORT, connect=False)
coll = mngo.collect
operations.append(UpdateOne({"_id": k},{"$inc": data}))
operations.append(InsertOne({"_id": k}))
result = coll.bulk_write(operations)
# MYSQL 批量更新
import pymysql
_conn = pymysql.connect(
	host=self.host,user=self.user,
	passwd=self.pwd,db=self.db,charset=self.charset)
_cursor = _conn.cursor()
sql_insert = "INSERT INTO `test_news`.`test_news_detail` (`nid`, `title`, `author`, `content`, `pub_time`) values (%s, %s, %s, %s, %s)"
data_list = [('1','標題','','',''), ('1','標題','','',''),('1','標題','','','')]
_cursor.executemany(sql_insert, data_list)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章