多年来我一直使用mysql-python库来连接mysql数据库。这些年来它对我很有用。但有时你需要有更快的速度或使用mysql-python时有更好的连接管理。这就是SQLAlchemy的用武之地。

在深入研究之前,如果你正在做那些不怎么依赖于速度的事情(例如:你并不关心花了1秒钟来连接数据库、操作数据、关闭数据库),那么你可以忽略掉这个窍门。即便如此,如果你有多个连接,连接的时间则会相加起来。
例如,我最近遇到一个问题,连接数据库、运行分析并出结果花费了4.5秒以上的时间。如果这是为你做的事情,这个结果并不糟糕。但是如果这是一个生产系统并且速度是必须的要求,4.5秒就显得太长了(真的太长了)。
当使用python的timer()函数做一些分析时,我发现4.5秒的时间中有50%以上用于建立数据库连接,因此我使用了SQLAchemy(https://www.sqlalchemy.org/)工具包并开始工作。对于那些不了解SQLAlchemy的人,SQLAlchemy是一个“pythonSQL工具包和对象关系映射器”(ORM),目的是当使用SQL数据库工作时会使事情变得简单起来。对我来说,ORM倾向于将事情变得更复杂,所以我倾向于使用普通的SQL查询,但是SQLAlchemy的SQL toolkit方面很有意义,并且在连接到SQL数据库时可以节省一些时间。
在我们深入SQLAlchemy之前,让我们花一些时间查看如何使用mysql-python连接器连接到SQL数据库(至少看我是如何操作的)。
首先,让我们设置import语句。为此,我们将引入库MySQLdb,pandas和pandas.io.sql,以此将SQL数据直接读入一个pandas dataframe中。


第二步,创建一个数据库连接、创建查询、运行此查询并最终关闭数据库。

从数据库mysql中使用mysql-python读取数据至pandas dataframe中,这是一个相当标准的方法。正如上面所讨论的,在我运行了4.5秒以上的时间之前,我就一直在使用这种方法。注意:在4.5秒及以上的时间中,包含了多项数据库调用和分析。在我试图改进性能的代码中,像上面这样的基本数据库调用大约运行0.45秒,而建立数据库连接是大部分时间。
为了改善性能--特别是如果要对多个表进行多个调用,可以使用SQLAlchemy和pandas。如果你还未安装它,你将需要pip insstall sqlalchemy。现在,让我们设置导入:

现在你可以为SQLAlchemy设置与数据库连接的字符串,你可以像下面这样把所有的内容放在一起:

这其中,USER是你的用户名,PW是你的密码,DBHOST是数据库主机,DB是你想要连接的数据库。

要设置持久连接,请执行以下操作:

现在,你已经连接到数据库,可以开始了。无需担心游标或数据库连接的开启与关闭。SQLAlchemy为你保留了连接管理方面的内容。
现在你需要做的是关注你的SQL查询并将结果加载至pandas dataframe中。

以上就是所有的细节。并且......它更快。在上面的例子中,我的数据库设置/连接/查询/关闭的时间从0.45秒降低到0.15秒。运行时间取决于你查询的数据和数据库是否恰当,但是在本例中,除了mysql-python被SQLAlchemy替换并在pandas中使用了新的read_sql_query函数,其他所有内容都是相同的。
使用这种方法,获取数据、分析数据并返回数据所需的4.5秒以上的时间减少至1.5秒左右。并且仅仅转换了连接与管理的方法就获得了令人印象深刻的好处。

英文原文:https://pythondata.com/quick-tip-sqlalchemy-for-mysql-and-pandas/ 译者:ONGOING

sqlalchemy mysql_小窍门:为MySQL和Pandas准备的SQLAlchemy相关推荐

  1. sql无法写入mysql_无法通过写入mysql数据库pandas.to\u sql使用sqlalchemy,但不能通过没有pandas的sqlalchemy...

    我正在尝试将数据帧写入MySQL表.这是我的代码:import pandas as pd import sqlalchemy connectString="""mysql ...

  2. sqlalchemy mysql_使用SQLAlchemy操作MySQL

    SQLAlchemy是Python编程语言下的一款开源软件,提供了SQL工具包及对象关系映射(ORM)工具,使用MIT许可证发行.SQLAlchemy首次发行于2006年2月,并迅速地在Python社 ...

  3. mysql与pandas谁快,pandas和SQL哪个快

    python pandas to_sql将excel数据导入到MySQL数据库 用python pandas to_sql写了个脚本,向MySQL数据库导入excel数据,本地其实吧, 一分钟10W条 ...

  4. Pandas告警UserWarning: pandas only supports SQLAlchemy connectable

    Pandas告警UserWarning: pandas only supports SQLAlchemy connectable 一.报错信息 二.老的书写方式 三.新的书写方式 一.报错信息 使用老 ...

  5. 17个Python小窍门

    python中相对不常见却很实用的小窍门. 空谈不如来码代码吧: 交换变量值 给列表元素创建新的分隔符 找列表中出现次数最多的元素 核对两个字符是否为回文 反向输出字符串 反向输出列表 转置2维数组 ...

  6. javascript 中的eval方法 小窍门

    eval()函数 JavaScript有许多小窍门来使编程更加容易. 其中之一就是eval()函数,这个函数可以把一个字符串当作一个JavaScript表达式一样去执行它. 举个小例子: var th ...

  7. 10个小窍门,让你轻松准确搜索。

    10个小窍门,让你轻松准确搜索. 在今天,用户可以通过搜索引擎轻松找出自己想要的信息,但还是难以避免结果不尽如人意的情况.实际上,用户仅需掌握几个常用技巧即可轻松化解这种尴尬. 下面介绍10个在进行G ...

  8. 洗衣小窍门集锦 [ZZ]

    发信人: zhuangw (庄子·逍遥游), 信区: LIFE 标  题: 洗衣小窍门集锦 [ZZ] 发信站: BBS 碧海青天站 (Wed Aug  9 11:14:53 2006), 转信 一.清 ...

  9. 人人都应该知道的身体小窍门!

    1.如果你的喉咙痒,挠你的耳朵! 当耳朵里的神经被刺激,会造成咽喉的反射作用,引起肌肉痉挛,这种痉挛会缓解发痒. 2.体验超声波听觉! 右耳比左耳更善于听快节奏的谈话,而左耳更善于听取音乐的曲调. 3 ...

最新文章

  1. matlab画复变函数,科学网—复数复变函数的Matlab计算与绘图 - 周铁戈的博文
  2. 字符串还可以这样初始化--uboot篇
  3. Nginx服务器上安装并配置PHPMyAdmin的教程
  4. ThinkServer RD430:高性价比的海量存储服务器
  5. Python爬虫开发:requests库的使用--ip代理参数的设置
  6. C#方法重载(overload)方法重写(override)隐藏(new)
  7. python入门常识
  8. VS2012 +OpenCv2.4.4配置
  9. Price determination entry point - how is 4.85 calculated
  10. Mac技巧|如何在 MacBook上设置一位数登录密码
  11. linux系统管理实验报告总结_Linux系统:常用Linux系统管理命令总结
  12. tapestry autocomplete 更改样式及定位
  13. matlab cnn 实例,Deep Learning学习 之 CNN代码解析(MATLAB)(示例代码)
  14. 利用第三方软件识别图片文字并转换为文本
  15. QT5.12静态编译手册
  16. 编程机器人疯抢教育市场!6大派玩家谁主沉浮
  17. rtsp 报文转发_stp技术回顾和rstp经典笔记
  18. 基于Nginx实现访问控制,连接限制离
  19. 【JavaWeb】JSP技术详解
  20. 生活.小米移动电话卡1718或1719号段的接入点设置

热门文章

  1. PHP函数spl_autoload_register()用法和__autoload()介绍(转)
  2. sencha touch 彩色图标按钮(button+ico)
  3. IE6下Png透明最佳解决方案(推荐) Unit PNG Fix
  4. vc++中ListBox用法
  5. Spring AMQP + Rabbit 配置多数据源消息队列
  6. JAVA核心:内存、比较和Final
  7. TFS 无法找到新加的Windows用户
  8. 永不改变的PCB设计黄金法则
  9. 解决安卓TextView高度和textSize大小不一致问题
  10. Linux find命令详解 【转】