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 If语句   java如何在Spark中使用两个“条件”进行过滤?   雅加达ee为ColdFusion提供的最佳Java ee服务器   java如何在jersey的MessageBodyWriter方法中获取writeTo中的anotations值?   java从脚本文件调用jar文件中的函数   java在执行insert语句后,如何获得id值为的语句?   在OS X上设置OpenCV Java绑定   java使用for循环遍历数组x。以字符串形式返回x的元素,其中每个元素由一个空格分隔   ApacheiClientBuilder为Algolia Java创建的APIClient是线程安全的吗?   java在DFS/BFS算法中获取邻居时避免内存分配?   java使用AES/CBC/PKCS5P加密大文件(2GB)   允许保存/加载列布局的Java DB网格组件   队列大小为1的java Spring调度   跑步带有Java参数的exe   java正则表达式将所有“<”和“>”标记替换为“&lt;”及“&gt;”在<<![CDATA]>标签?   java何时同步变量?