使用PostgreSQL的实用程序库

pg-utils的Python项目详细描述


https://badge.fury.io/py/pg-utils.svgDocumentation Status

在分析大型数据集时,让数据库尽可能多地进行分析通常是有用的。虽然Pandas is great at manipulating datasets that are large enough to fit on one machine, but possibly not large enough to fit into memory,但对性能和数据安全的关注有时会使数据库中的分析更加方便。

这个包是为postgresql而构建的。支持其他数据库可能会跟随(但不要屏住呼吸)。

等等,什么?为什么?!?

让我们用几个例子来说明。首先,建立连接很简单:

In [1]: from pg_utils import connection, table

In [2]: conn = connection.Connection()

环境变量pg_usernamepg_passwordpg_hostnamepg_database可用于存储相应连接信息的值。当然,任何用户名、密码、主机名或数据库都可以被覆盖。

接下来,让我们构建一个简单的表,由一百万行组成,其中一列是随机选择的,另一列是从标准正态分布(通过Box-Muller transform)中采样的。

In [1]: from pg_utils import table

In [2]: t = table.Table.create("pg_utils_test",
   ...:         """create table pg_utils_test as
                    select random() as x,
   ...:             sqrt(-2 * ln(u1))*cos(2*PI()*u2) as y
   ...:             from(
   ...:                 select random() as u1, random() as u2
   ...:                 from generate_series(1, 1000000)
   ...:             )a""")

对象t是元数据对象。它不保存表中的任何实际数据。但是,我们有一个通过数据库工作的熊猫api的有限子集。例如:

In [3]: t.describe()
Out[3]:
                      x               y
count    1000000.000000  1000000.000000
mean           0.499628       -0.000075
std_dev        0.288671        0.999630
minimum        0.000001       -4.589661
25%            0.249420       -0.672603
50%            0.499709        0.000695
75%            0.749733        0.673413
maximum        0.999999        4.867347

注意,none这些计算是在本地完成的。它们都在数据库里完成了。

另外,t.x.distplot(bins=1000)t.y.distplot(bins=1000)生成以下直方图(带kde):

img/x.pngimg/y.png

Tableapi已从0.3.x显著更改为0.4.0。特别是,schema和connection参数现在是可选的(分别替换为用户名和新连接)。这使得表名成为许多这些方法唯一需要的参数。如果table_name已经被模式限定(例如"foo.bar"),那么pg utils将做正确的事情,只需设置schema="foo"table_name="bar"

目标

此套餐的目标是:

  • 提供一个简单的Connection对象,该对象基于环境变量构建到数据库的简单连接(如果指定,则使用参数重写)。
  • 分别使用ColumnTable元数据构造模拟pandas系列和dataframe对象。列和表将实现在数据库中进行计算的pandas api的某些部分。
  • 可能还有其他工具,用于自动化简单任务和方便地显示元数据(如果需要)。

非目标

这个包裹永远不会是:

  • 对象关系映射器(ORM)。唯一的sql-ish操作将是那些已实现的操作,以及用于序列和/或数据帧的pandas api的模拟sql-ish位。

安装

在皮皮上。所以,只要做

pip install pg-utils

对于基本包,或

pip install pg-utils[graphics]

为图形可视化安装Seaborn

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Android测试运行失败:没有测试结果   java设置JMenuItems与Nimbus LaF的边界   java是使用springboot、Crudepository和MySQL检查重复值的好方法吗   谷歌电子表格的Java时代日期   java向xml文件添加EditText不起作用   java ORA00933:SQL命令未正确结束WHERE子句   如何在java中防止JTextField上使用CTRL+C?   java绑定到TypeLiteral在google guice中是好的还是坏的做法   java找到了原始类型,缺少泛型类的返回参数   Kafka Streams API中ArrayList Serde的java问题   java在hibernate中,哪种持久化上下文的性能更好?   java通过本机查询获取数据库url、名称和模式版本   如何为Java枚举编写通用for循环?   在Java应用程序中播放MP3   如何使用VisualVM度量短时间运行的Java应用程序的性能?   java从当前日期获取datetime(秒)   简单JMH基准中的javagrpcoome和NPE   java如何加载Maven项目库中Spring jar的应用程序上下文   JavaCC XPath解析器   用于Scala和Java的类型安全生成器库