pandas read_sql,pandas中read_excel函数的参数

  pandas read_sql,pandas中read_excel函数的参数

  本文主要介绍在pandas中利用read_sql的参数实现数据查询。通过示例代码详细介绍,对大家的学习或工作有一定的参考价值。有需要的朋友下面跟边肖学习。

  00-1010 1.前面的处理方法2。在read_sql 1中使用params输入参数。文档描述2。具体用途3。总结和比较。格式化字符串pandas.read_sql可以执行指定的sql语句查询或查询数据库中指定的整个表,并将查询结果作为DataFrame返回,这是与数据库进行交互操作的重要步骤

  要解决的问题:写好的SQL语句需要重用,这就涉及到参数。使用参数替换条件,然后根据需要替换参数。

  

目录

 

  在使用参数之前,我一直使用的是常规方法,即使用re.sub的方法来替换所需的SQL内容。这种方式的好处是任何内容都可以替换,缺点是每次使用都必须导入re.sub。

  从再进口接头

  导入sqlalchemy

  进口熊猫作为pd

  #创建数据库连接。这里用的是pymysql。

  engine=sqlalchemy . create _ engine( MySQL pymysql ://username : password @ IP : port/store _ name )

  SQL= select * from test where id= PID

  #使用sub进行数据替换

  data=pd.read_sql(sub(pid , 1 ,sql),engine)

  这里用的时候,pid是统一处理用的标识名,这样以后只要随时替换pid就可以了。

  需要注意的一点是,sub替换后的输入是一个字符串,但是在SQL中替换时输入不会改变。例如

  SQL= select * from test where id=PID data=

  pd.read_sql(sub(pid , 1 ,sql),引擎)

  在sub(pid , 1 ,sql)操作之后,SQL变成

  sql select * from测试,其中id=1

  如果id字段是int类型的就没问题,但是如果id字段是char或varchar等其他类型的,就会显得字段类型是string但是数字是给定的(mysql很宽容,不一定报错,但是在数据类型上肯定是错的)

  

一、之前的处理方法

 

  

二、使用 read_sql 中的 params 传入参数

 

  pandas.read_sql(sql,con,index_col=None,concrete _ float=True,params=None,parse_dates=None,columns=None,chunk size=None)[来源]

  params参数已经在read_sql方法中,可以传递该参数。具体描述如下。

  params :列表,元组或字典,可选,默认值:无

  要传递给执行方法的参数列表。用于传递参数的语法取决于数据库驱动程序。请查阅数据库驱动程序文档,了解PEP 249的paramstyle中描述的五种语法样式中哪一种是受支持的。邪恶的笑(Evil Grin的缩写)

  . for psycopg2, uses %(name)s so use params={‘name’ : ‘value’}

  

  意思就是可以使用功能 list, tuple or dict 传递参数,但是如何怎么设置参数和传递参数需要依据使用的数据库引擎。PEP 249’s paramstyle 如下表

  paramstyleMeaningqmarkQuestion mark style, e.g. …WHERE name=?numericNumeric, positional style, e.g. …WHERE name=:1namedNamed style, e.g. …WHERE name=:nameformatANSI C printf format codes, e.g. …WHERE name=%spyformatPython extended format codes, e.g. …WHERE name=%(name)s

  总结下就是在SQL语句中使用?, :1, :name, %s, %设置参数,然后在params 使用 list, tuple or dict 进行参数的传递

  

 

  

2.具体的使用

 

  

 from re import sub

 

  具体的参数就如上面代码所示,使用了 %(pid)s 设置参数,再用params={‘pid’: ‘1’}传递参数,在Stack Overflow上有个提问也是关于这个的,里面还有关于psycopg2 和SQLite 的参数传递。

  

 

  

三、总结对比

 

  之前没有想过使用参数,是因为在SQL中我不仅要替换固定条件,而且有时候需要替换大段的SQL,所以使用 sub 会更灵活也更模糊(传入的是字符串,到了SQL里面数字还是字符串得再处理一遍),但是使用方法自带的参数传递可以很明确的传递正确的数据和数据类型,而且不觉得使用方法自带的参数传递很优雅?

  

 

  

四、字符串的格式化

 

  对于参数的传递还有另外一种就是python中的字符串格式化,format函数可以实现不带参数、带索引参数、带关键字参数,python的字符串格式化可以参考python格式化输出
下面是format的使用示例

  

in : print("{one} are {two} {three}".format(one=you, two=1, three=pig))

 

  这里的1应该为a,但是为了演示传递整数参数

  到此这篇关于pandas中read_sql使用参数进行数据查询的实现的文章就介绍到这了,更多相关pandas read_sql查询内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: