python连接mysql数据库

本文介绍了如何在Python中使用SQLAlchemy连接数据库,包括读取和保存数据的方法,以及一个实际的案例演示,包括全量查询、筛选和Excel数据导入操作。

   

目录

1. 连接数据库

2. 读取和保存数据

3. 案例演示


   sql语句在日常数据分析中是必不可少的技能,但是要想精通sql需要一定的积累,同时对于数据结构的熟悉程度也有较高要求。在这种情况下,可以考虑在python中来完成一些数据操作,达到降维的目的,缺点就是可能运行的时间会变长。

1. 连接数据库

from sqlalchemy import create_engine

MYSQL_HOST = '123.456.78'  # 地址
MYSQL_PORT = 3306  # 端口
MYSQL_USER = 'user_01'  # 数据库名字
MYSQL_PWD = 'password'  # 数据库密码
MYSQL_NAME = 'table_name'  # 数据库表名

context_engine = create_engine('mysql+pymysql://%s:%s@%s:%d/%s?charset=utf8' % (
    MYSQL_USER, MYSQL_PWD, MYSQL_HOST, MYSQL_PORT, MYSQL_NAME))

  上述代码中的数据仅为举例,实际使用中对应替换即可 

2. 读取和保存数据

from sqlalchemy import create_engine
import pandas as pd
MYSQL_HOST = '123.456.78'  # 地址
MYSQL_PORT = 3306  # 端口
MYSQL_USER = 'user_01'  # 数据库名字
MYSQL_PWD = 'password'  # 数据库密码
MYSQL_NAME = 'table_name'  # 数据库表名


class sql_data(object):
    def __init__(self):
        self._context_engine = create_engine('mysql+pymysql://%s:%s@%s:%d/%s?charset=utf8' % (
            MYSQL_USER, MYSQL_PWD, MYSQL_HOST, MYSQL_PORT, MYSQL_NAME))

    def context(self, sql):  # 读取数据
        df = pd.read_sql(sql, self._context_engine)
        return df

    def save(self, name, df):  # 保存数据
        df.to_sql(name=name, con=self._context_engine, if_exists='append', index=False)

    def save_new(self, name, df):  # 保存去重数据
        df.to_sql(name=name, con=self._context_engine, if_exists='replace', index=False)

 方便起见,将常用的功能打包成一个类模块。

3. 案例演示

if __name__ == '__main__':
    # 建立连接
    api = sql_data()
    # 查询单个表的全量数据
    test_sql = "SELECT * FROM  test_table"
    test_sql_data = api.context(test_sql)

    # sql语句添加筛选
    filtrate_name = 'name'
    filtrate_sql = "SELECT * FROM test_table where filtrate_namee ='%s'" % (filtrate_name)
    filtrate_data = api.context(filtrate_sql)

    # 读取excel,并保存到数据库
    test_df = pd.read_excel('test.xlsx')
    api.save('test', test_df)

  需要注意的是,在excel数据入库的时候,最好是将数据进行标准化处理(如小数保留位数,数据的格式),避免后续读取时不必要的麻烦。

本期分享到此结束,有问题随时交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值