添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

#数据存取#-pandas-mysql的数据操作

问题描述:如何便捷的操作数据库数据

公司的内部数据都是存储在数据库中的,我们通过其他渠道提取的数据也需要往数据库中存入,实现便捷的数据存取变得非常重要!!!

依据日常的工作需求,对数据的操作可以分为如下几类:

1、数据查询:从数据库中提取数据,如:select * from test_table where col_a ='a';

2、数据导入:将excel 或者其他类的数据,导入数据库中;

3、创建、修改和删除:create test_table... ,update test_table ...,delete test_table...

问题解决:pandas + mysql + sqlalchemy

依赖库: SQLAlchemy 1.4 Documentation

import pandas as pd
from sqlalchemy import create_engine  
#创建engine,连接数据库(此时并没有真正的连接上数据库)
engine= create_engine('mysql+pymysql://用户名:密码@host:port/db_name?charset=utf8')

1、数据查询: pandas.read_sql ( sql , con , index_col=None , coerce_float=True , params=None , parse_dates=None , columns=None , chunksize=None )

文档如下: pandas.read_sql - pandas 1.0.2 documentation

sql="select * from test_table ;"
data=pd.read_sql(sql_need,engine) #前面创建的engine
#此时就是把查询所得数据以dataframe 的取出来了,后续可以用pandas 直接处理
print(data)

2、数据导入: DataFrame.to_sql ( self , name: str , con , schema=None , if_exists: str = 'fail' , index: bool = True , index_label=None , chunksize=None , dtype=None , method=None )

文档如下: pandas.DataFrame.to_sql - pandas 1.0.2 documentation

table_name='test_table'
data.to_sql(table_name,con=sql_engine,index=False,if_exists='append')
#此时,就是把上面读出来的data,追加到table_name 中去,注意 if_exists 的使用,具体如下
if_exists{‘fail’, ‘replace’, ‘append’}, default ‘fail’
    How to behave if the table already exists.
        fail: 如table_name 是存在的,则报错.
        replace: 如table_name 是存在的,删除该表,然后创建新表并导入数据.
        append: 如table_name 是存在的,向该表追加数据.
另外,在追加数据的时候,务必注意数据类型的问题,否则非常容易出现数据导入错误
"""

3、创建、修改和删除:engine.execute

sql="delete from test_table where col_a='a'" #需要执行的sql语句
engine.execute(sql) #create,update,delete 等不返回数据的操作,均可以使用

代码编写:

import pandas as pd
from sqlalchemy import create_engine  
#创建engine
engine= create_engine('mysql+pymysql://用户名:密码@host:port/db_name?charset=utf8')
#数据查询
sql="select * from test_table ;"
data=pd.read_sql(sql_need,engine)
#数据导入