利用pandas读写数据库

最近做一个使用mysql数据库的项目,数据量比较大,读起来费劲,偶然发现pandas中居然有直接读写数据库的内置函数,不禁欣喜万分又颓然失落,喜的是居然有这么方便的方法,落的是pandas用了这么久居然这都不知道......心塞。

回归正题,pandas读取数据库数据的方法如下:

pd.read_sql( sql,con,index_col = None,coerce_float = True,params = None,parse_dates = None,columns = None,chunksize = None )

 

  1. sql:string或要执行的SQL查询或表名。SQLAlchemy可选。你可以写个sql语句,也可以写个表名,然后再columns中写入你要读取的列。
  2. con:SQLAlchemy可连接(引擎/连接)或数据库字符串URI或DBAPI2连接(后备模式),使用SQLAlchemy可以使用该库支持的任何数据库。如果是DBAPI2对象,则仅支持sqlite3。
  3. index_col:字符串或字符串列表,可选,默认值:None。
  4. coerce_float:boolean,默认为True,尝试将非字符串,非数字对象(如decimal.Decimal)的值转换为浮点,这对SQL结果集很有用。
  5. params:list,tuple或dict,optional,default:None,要传递给执行方法的参数列表。
  6. parse_dates:list或dict,默认值:None,要解析为日期的列名列表。
  7. columns:list,默认值:None,从SQL表中选择的列名列表(仅在读取表时使用)。
  8. chunksize:int,默认None,如果指定,则返回一个迭代器,其中chunksize是要包含在每个块中的行数。

pandas写入数据库数据的方法如下:

def df_to_sql(df,table_name,conn,if_exists='append',dtype=None,):
    
    df.to_sql(table_name,conn,if_exists=if_exists,dtype=dtype)
    return

 

  1.     :param df: 要存的数据,dataframe格式
  2.     :param table_name: 要存的表名,如果没有会创建
  3.     :param conn: 数据库连接,同上面读取时的连接一样
  4.     :param if_exists: 如果表存在怎么操作,fail:什么也不做,replace:替换之前的表,append:在之前的表后添加
  5.     :param dtype:字典格式,key是列名,value是这一列的格式(数据库支持的格式比如char,int等),可以不选,pandas会根据数据自动给定字段类型
  6.     :param index:默认是True,产生一个从0开始的索引
  7.     :param index_label:默认为None,想要使用的索引列名称,多重索引应该给定一个序列

使用起来很简单,也很方便,记录一下

你可能感兴趣的:(python)