Django的PostgreSQL本机数组字段扩展。

djorm-ext-pgarra的Python项目详细描述


Django的PostgreSQL数组字段。

简介

默认情况下,django有一个可能的类型的大集合,可以用来定义 模型。但有时我们需要使用postgresql提供的一些更复杂的类型。在这 case,我们将研究postgresql数组与django的集成。

快速启动

djorm ext pgarray公开一个简单的django模型字段djorm\pgarray.fields.arrayfield。 它接受另外两个参数:dbtype表示postgresql类型,以及 dimension表示数组字段的维度。

这是使用arrayfield的模型定义示例:

fromdjango.dbimportmodelsfromdjorm_pgarray.fieldsimportArrayFieldfromdjorm_expressions.modelsimportExpressionManagerclassRegister(models.Model):name=models.CharField(max_length=200)points=ArrayField(dbtype="int")objects=ExpressionManager()classRegister2(models.Model):name=models.CharField(max_length=200)texts=ArrayField(dbtype="text",dimension=2)# this creates `points text[][]` postgresql field.objects=ExpressionManager()

创建对象

这是使用数组字段创建对象的示例。

>>> Register.objects.create(points=[1,2,3,4])<Register: Register object>
>>> Register2.objects.create(texts=[['Hello','World'],['Hola','Mundo']])<Register2: Register2 object>

使用自定义postgresql数据类型

有时我们需要使用postgresql提供的其他数据类型来创建数组和 djorm ext pgarray不提供对它的内置支持。现在,djorm ext pgarray 支持一种简单的扩展方法:

classRegister(models.Model):name=models.CharField(max_length=200)macs=ArrayField(dbtype="macaddr",type_cast=lambdax:str(x))# Same as previous line but uses str as callback directly# macs = ArrayField(dbtype="macaddr", type_cast=str)objects=ExpressionManager()
如果ArrayField不是一个类型的人,那么他就忽略了一个建筑的存在。 对某个类型强制转换函数,并使用通过类型强制转换参数传递的函数。

如何安装?

您可以从github克隆repo并使用简单的python setup.py安装进行安装 命令。或者使用pip从python包索引安装它。

pip install djorm-ext-pgarray

此外,还可以安装djorm ext表达式,这有助于处理复杂的查询 使用数组字段。

已知问题

  • 使用表达式包的查询集不能用作子查询。因为别名 传播无法正常工作。

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

推荐PyPI第三方库


热门话题
在Java中使用BufferedReader类读取文本文件的子字符串   java如何在JSP页面上包含来自另一台服务器的动态JSP   使用单表策略的java持久化Hibernate继承映射   java报告状态失败达600秒。谋杀!报告hadoop的进展   java将字符串解析为形状   使用JTable的java ClassCastException?   java在Spring引导中关闭数据库   java Android Studio调试错误(Ubuntu)   java如何区分apache beam中KV实例中的两个键?   java将RealmObjectChangeListener添加到异步下载的RealmObject   java匹配模式之前的所有内容,包括新行和/或回车   java使用JAXB在XML中动态更改元素序列   java如何在MACOS中找到动态库(.dylib文件)的版本   Android中的java Nanohttpd服务器   java libGDX:3d动画不工作