import json
import os
import re
import sys
import chardet
import pandas as pd
# 封装pandas where的条件
def get_where_pandas_condition(column_headers, a_condition, a_condition_val, b_condition, b_condition_val):
where_condition = []
where_val = []
for column in column_headers:
for i in range(len(a_condition)):
condition = a_condition[i]
val = a_condition_val[i]
if column == condition:
if condition not in where_condition:
where_condition.append(condition)
where_val.append(val)
elif condition in column:
if val not in where_val:
condition = str(condition) + "_x"
if column == condition:
where_condition.append(condition)
where_val.append(val)
for i in range(len(b_condition)):
condition = b_condition[i]
val = b_condition_val[i]
if column == condition:
if condition not in where_condition:
where_condition.append(condition)
where_val.append(val)
elif condition in column:
if val not in where_val:
condition = str(condition) + "_y"
if column == condition:
where_condition.append(condition)
where_val.append(val)
return where_condition, where_val
# 获取 Join类型
def get_join_type(join):
return join
# 两表join
def get_join_result(param, df1, df2):
alias1 = param["file1_alias"]
alias2 = param["file2_alias"]
join = param["join"]
join_condition = data["join_condition"]
and_pattern = re.compile(r" and ", re.I)
join_conditions = re.split(and_pattern, join_condition)
a_column = []
b_column = []
for condition in join_conditions:
condition = condition.replace(" ", "")
column = condition.split("=")
a_column.append(re.sub(alias1 + "\.", "", column[0], flags=re.I))
b_column.append(re.sub(alias2 + "\.", "", column[1], flags=re.I))
a_new_column = []
a_rename = {}
for a_item in a_column:
a_column_name = a_item + "_x"
a_new_column.append(a_column_name)
a_rename[a_item] = a_column_name
df1.rename(columns=a_rename, inplace=True)
b_new_column = []
b_rename = {}
for b_item in b_column:
b_column_name = b_item + "_y"
b_new_column.append(b_column_name)
b_rename[b_item] = b_column_name
df2.rename(columns=b_rename, inplace=True)
df = df1.merge(df2, how=join, left_on=a_new_column, right_on=b_new_column, suffixes=("_x", "_y"))
return df
# 处理where 条件,含or条件
def get_where_result(param, df):
column_headers = list(df.columns.values)
where = param["where"]
a_condition = []
a_condition_val = []
b_condition = []
b_condition_val = []
Python 利用pandas 实现 mysql功能
最新推荐文章于 2026-01-19 19:25:18 发布
本文将介绍如何使用Python的pandas库与MySQL数据库进行交互,实现数据的读取、写入、更新和删除操作。通过实例代码,你将学会如何高效地利用pandas进行MySQL数据管理。

3405

被折叠的 条评论
为什么被折叠?



