栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python+mysql 数据添加、查找、删除和pandas表格存入sql

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python+mysql 数据添加、查找、删除和pandas表格存入sql

import pymysql

import sqlalchemy

HOST = '127.0.0.1'
PORT = 3306
USER = 'root'
PWD = 'xxx'
CHARSET = 'utf8mb4'


def insert(db, tablename, values, _charset=CHARSET):
    conn = pymysql.connect(host=HOST,
                           port=PORT,
                           user=USER,
                           passwd=PWD,
                           db=db,
                           charset=_charset
                           )
    cursor = conn.cursor()  # 游标对象,用于执行查询和获取结果
    sql = 'insert into ' + db + '.' + tablename + ' ('
    temp = ''
    for key in values.keys():
        sql += key + ' ,'
        value = values[key]
        if type(value) == type(""):
            value = value.replace(''', '"').replace('\', '\\')
            temp += ''' + value + '' ,'
        else:
            temp += str(value) + ' ,'
    sql = sql[:-1] + ') values (' + temp[:-1] + ')'
    # print(sql)

    cursor.execute(sql)
    conn.commit()
    # print("记录插入成功!")
    conn.close()


def select(db, tablename, condition=None, _charset=CHARSET):
    conn = pymysql.connect(host=HOST,
                           port=PORT,
                           user=USER,
                           passwd=PWD,
                           db=db,
                           charset=_charset
                           )
    cursor = conn.cursor()  # 游标对象,用于执行查询和获取结果
    sql = 'select * from ' + db + '.' + tablename
    if condition:
        sql += ' where'
        for key in condition.keys():
            value = condition[key]
            if type(value) == type(""):
                value = value.replace(''', '"').replace('\', '\\')
                value = ''' + value + '''
            else:
                value = str(value)
            sql += ' ' + key + ' = ' + value + ' and'
        sql = sql[:-3]
    # print(sql)
    cursor.execute(sql)
    result = cursor.fetchall()
    conn.commit()
    conn.close()
    return result


def update(db, tablename, values, condition, _charset=CHARSET):
    conn = pymysql.connect(host=HOST,
                           port=PORT,
                           user=USER,
                           passwd=PWD,
                           db=db,
                           charset=_charset
                           )
    cursor = conn.cursor()  # 游标对象,用于执行查询和获取结果
    sql = 'update ' + db + '.' + tablename + ' set '
    for key in values.keys():
        if key in condition:
            continue
        value = values[key]
        if type(value) == type(""):
            value = value.replace(''', '"').replace('\', '\\')
            value = ''' + value + '''
        else:
            value = str(value)
        sql += ' ' + key + ' = ' + value + ' ,'
        # update spark.challenge set xx = x , xx = x where xx = x  中前面set是用, 不是and连接
    sql = sql[:-1] + ' where '
    for key in condition.keys():
        value = condition[key]
        if type(value) == type(""):
            value = value.replace(''', '"').replace('\', '\\')
            value = ''' + value + '''
        else:
            value = str(value)
        sql += ' ' + key + ' = ' + value + ' and'
    sql = sql[:-3] + ';'
    print(sql)
    cursor.execute(sql)
    conn.commit()
    conn.close()


def delete(db, tablename, condition, _charset=CHARSET):
    conn = pymysql.connect(host=HOST,
                           port=PORT,
                           user=USER,
                           passwd=PWD,
                           db=db,
                           charset=_charset
                           )
    cursor = conn.cursor()  # 游标对象,用于执行查询和获取结果
    sql = 'delete from ' + db + '.' + tablename + ' where '

    for key in condition.keys():
        value = condition[key]
        if type(value) == type(""):
            value = value.replace(''', '"').replace('\', '\\')
            value = ''' + value + '''
        else:
            value = str(value)
        sql += ' ' + key + ' = ' + value + ' and'
    sql = sql[:-3]
    # print(sql)
    cursor.execute(sql)
    conn.commit()
    conn.close()


def executeSql(db, sql_string, _charset=CHARSET):
    conn = pymysql.connect(host=HOST,
                           port=PORT,
                           user=USER,
                           passwd=PWD,
                           db=db,
                           charset=_charset
                           )
    cursor = conn.cursor()  # 游标对象,用于执行查询和获取结果
    cursor.execute(sql_string)
    result = None
    if sql_string.find('select') > -1 or sql_string.find('show') > -1:
        result = cursor.fetchall()
    conn.commit()
    conn.close()
    return result

def pd_to_sql(data, database, table_name, if_index=False, if_exists='replace', dtype=None):
    # if_exists='append'则为如果表存在则新数据扩展而不是替换表
    engine = sqlalchemy.create_engine('mysql+pymysql://' + USER + ':' + PWD + '@' + HOST + ':' + str(PORT) + '/' + database)
    if dtype:
        data.to_sql(table_name, engine, index=if_index, if_exists=if_exists,
                 dtype=dtype)
    else:
        data.to_sql(table_name, engine, index=if_index, if_exists=if_exists)
    print('the dataframe has been written into mysql table %s successfully!' % table_name)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/938202.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号