python 替換資料庫中文字中特殊字元

2021-07-25 09:30:51 字數 1558 閱讀 5628

遇見這個乙個需求:幾百萬的資料,需要替換掉不同種類的敏感語句,需要在測試庫中進行替換,成功後再替換生產庫。

難點1:考慮即適用開發環境,又適用生產環境,考慮使用python(簡潔,方便)

難點2:資料量太大;解決辦法:查詢時使用elasticsearch

難點3:替換種類多;解決辦法:進行一定的封裝

寫的不算細緻,可以替換部分規則的敏感語句。**顯示沒有格式,需要自行 reformat code

具體**如下:

# -*- coding: utf-8 -*-

from elasticsearch import elasticsearch

import pymysql

import re

import time

# elasticsearch查詢query匹配的結果

def getelasticsearchlist(query_string=''):

es = elasticsearch( [

'', ]

)res = es.search(index="test-questions", body=}],

"must_not": ,

"should": }}, "from": 0, "size": 2})

print("got %d hits:" % res['hits']['total'])

# 查詢匹配的字元 ,並以字典形式返回

dict = {}

for hit in res['hits']['hits']:

dict[hit["_source"]['id']] = hit["_source"]['content']

return dict

#替換符合規則的字元

def deletestring(dict):

result = {}

for key in dict:

reg = r'alt=".*!"' #替換'alt'標籤

strre = re.compile(reg)

str = re.sub(strre, ' ', dict[key])

result[key] = str

return result

#更新操作

conn = pymysql.connect(host='192.168.1.225', user='admin', passwd='neptune@admin', db='teachresource', port=3306,

charset='utf8')

cur = conn.cursor()

resultlist = deletestring(dict)

for key in resultlist:

cmd = "update sh_testquestion_bak set updatetime=%s,content =%s where id=%s"

cur.execute(

cmd, (int(time.time()) * 1000, resultlist[key], key))

conn.commit()

conn.close()

資料庫替換函式

表名 user item,字段 addr number addr 01 四川省成都市 街道05號 02 四川省成都市 街道07號 03 四川省成都市 街道09號 04 四川省成都市 街道04號 update 表名 set 欄位名 replace 欄位名,原來的值 要修改的值 update user ...

MySql資料庫無法插入中文字串

最近需要開發乙個註冊碼的登入,用到mysql資料庫,在將資料庫遷移到伺服器上發現向資料庫中插入中文字串時出現?亂碼我的解決方法 1 開啟mysql服務利用命令列檢視當前資料庫支援的預設編碼 輸入 show variables like char 可以看到當前資料庫的編碼 注意 character s...

mysql資料庫無法插入中文字元

分析原因 這是因為之前修改了資料庫的編碼,但資料表的編碼卻沒有跟著改變導致的。安裝mysql 時,使用的是latin編碼 隨後修改為utf8 建的資料表是在latin編碼下建立的。而jsp頁面使用的是utf8,所以無法插入資料。1.修改mysql資料庫編碼 修改mysql安裝目錄下的my.ini檔案...