pandas read_sql read_sql_query read_sql_table 区别

pandas read_sql与read_sql_table、read_sql_query 的区别

一:创建链接数据库引擎

from sqlalchemy import create_engine  
      
db_info = {'user':'user',  
    'password':'pwd',  
    'host':'localhost',  
    'database':'xx_db'  # 这里我们事先指定了数据库,后续操作只需要表即可
}  
  
engine = create_engine('mysql+pymysql://%(user)s:%(password)s@%(host)s/%(database)s?charset=utf8' % db_info,encoding='utf-8')    #这里直接使用pymysql连接,echo=True,会显示在加载数据库所执行的SQL语句。

二:读取数据库数据,存储为DataFrame格式

部分来自于博客:http://blog.csdn.net/u011301133/article/details/52488690

1:读取自定义数据(通过SQL语句)
pandas.read_sql_query(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None,chunksize=None)

例如:
data = pd.read_sql_query('select * from t_line ',con = engine) # 会返回一个数据库t_line表的DataFrame格式。如有有时间列可以parse_dates = [time_column]用于解析时间,并把此列作为索引index_col = [time_column]

read_sql_query()中可以接受SQL语句,包括增删改查。但是DELETE语句不会返回值(但是会在数据库中执行),UPDATE,SELECT,等会返回结果.

例如:
data = pd.read_sql_query('delete from test_cjk where f_intime = 1309',con = engine) # 这条语句会执行,删除 test_cjk表中f_intime=1309的值,但不会返回data。
其他例子:
'''插入操作''' 
 pd.read_sql_query("insert into cjk_test h values %(data)s",params={'data':v_split[11]},con=engine) 

'''更新操作''' 
pd.read_sql_query("update cjk_test set a='粤11111'  WHERE a='粤B30738'",con =engine)  

'''删除操作'''
pd.read_sql_query("delete from cjk_test where c='1'",con=engine)                  
删除插入更新操作没有返回值,程序会抛出SourceCodeCloseError,并终止程序。如果想继续运行,可以try捕捉此异常。
2:读取整张表于DataFrame格式(通过表名)
pd.read_sql_table(table_name, con, schema=None, index_col=None, coerce_float=True, parse_dates=None, columns=None, chunksize=None)


例如:
data = pd.read_sql_table(table_name = 't_line',con = engine,parse_dates= 'time',index_col = 'time',columns = ['a','b','c'])
3:读数据库(通过SQL语句或者表名)

通过sql语句的见我另一篇文章:http://www.cnblogs.com/cymwill/articles/7576600.html

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

在这里插入图片描述

下面两个的作用又是相同的:
在这里插入图片描述

这个是官网的源代码里面的片段:
在这里插入图片描述

我们再将query与table相反的试一下:
在这里插入图片描述

报错,故两者不能反过来。

从上面可以看到,其实read_sql是综合了read_sql_table和read_sql_query的,所以一般用read_sql就好了,省得再去区别那些东西。

转载于:https://www.cnblogs.com/cymwill/p/8289367.html

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值