Python 利用pandas 实现 mysql功能

本文将介绍如何使用Python的pandas库与MySQL数据库进行交互,实现数据的读取、写入、更新和删除操作。通过实例代码,你将学会如何高效地利用pandas进行MySQL数据管理。
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 = []
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值