[悪い書き方] 最も離れた区切り文字で区切られた配列を取得します; 正規表現は df の特定の列の否定セットです; sqlalchemy を修正し、to_sql を使用して重複エントリを生成します

# 获取最大分隔的分隔符分隔的数组;注意item是个string
def split_comparison(item):
    list_splitor = []
    list_str_splitor = ["len(item.split(','))","len(item.split('、'))","len(item.split(';'))","len(item.split(','))","len(item.split(';'))"]
    for i in list_str_splitor:
        list_splitor.append(eval(i))
    greatest_index = list_splitor.index(max(list_splitor))
    remove_outer_function = list_str_splitor[greatest_index].split("len")[1][1:-1]
    list_greatest = eval(remove_outer_function)
    return list_greatest




# regex针对df某一列的取反集;
#  其中regex_xhgg_data中包含的是各种需要踢掉的string pattern; ge_data都是待处理的df数据表。
for index, row in regex_xhgg_data.iterrows():
    ge_data_0 = ge_data_0[~ge_data_0['xhgg'].apply(lambda k: True if re.search(row[0], k) else False) ]
    ge_data_1 = ge_data_1[~ge_data_1['xhgg'].apply(lambda k: True if re.search(row[0], k) else False) ]


# 修复sqlalchemy用to_sql出duplicate entries
from sqlalchemy import create_engine
from sqlalchemy.dialects.mysql import insert

def insert_on_duplicate(table, conn, keys, data_iter):
    insert_stmt = insert(table.table).values(list(data_iter))
    on_duplicate_key_stmt = insert_stmt.on_duplicate_key_update(insert_stmt.inserted)
    conn.execute(on_duplicate_key_stmt)

target_table = "kvs_table"
engine = create_engine('mysql+pymysql://root:[email protected]:3306/ppt')
# 注意method用法
ge_data_0.to_sql(target_table,engine,chunksize=10000,index=False, if_exists='append',method=insert_on_duplicate)

おすすめ

転載: blog.csdn.net/u011410413/article/details/128292589