Postgres数组类型的django orm字段。

django-dbarra的Python项目详细描述


存储值列表的django模型字段,使用postgresqlARRAY类型实现。

要求

  • PostgreSQL
  • 心理2
  • django>;=1.2

数组db类型是postgresql特定的,因此这些模型字段当前 只能使用psycopg2处理postgresql。如果 字段与另一个数据库一起使用。

这个包已经用django 1.2到1.6版本(包括1.2到1.6)进行了测试。

字段

dbarray模块中定义的字段类型列在下表中, 以及每个字段的父类(来自django.db.models)和数据 它将创建的PostgreSQL列的类型。

每个字段都采用与其父类相同的参数。

Field TypeParent ClassPostgresql Type
IntegerArrayFieldIntegerFieldinteger[]
FloatArrayFieldFloatFielddouble precision[]
TextArrayFieldTextFieldtext[]
CharArrayFieldCharFieldcharacter varying[]
DateArrayFieldDateFielddate[]

自定义字段

要为基字段定义新的数组字段,请键入FooField

import dbarray

class FooArrayField(dbarray.ArrayFieldBase, FooField):
    __metaclass__ = dbarray.ArrayFieldMetaclass

这可能起作用,也可能不起作用,这取决于几个因素。例如,你可能需要 要重写db_type方法,使其将[]放在列中的正确位置 生成的SQL中使用的类型。

使用数组字段执行查找时可能出现的另一个问题 postgresql可以将查询参数作为数据类型 与db列的类型不兼容(例如text[] 而不是varchar[])。然后会出现如下错误:

DatabaseError: operator does not exist: character varying[] = text[]
LINE 1: ... FROM "dbarray_chars" WHERE "dbarray_chars"."arr" = ARRAY['A...
                                                             ^
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.

您可以通过在 ArrayFieldBase子类,它指示它添加显式类型转换 到SQL查询。

在源代码中查看更多关于如何处理新的 阵列字段类型。

版本历史记录

版本0.2

Released:October 17, 2013

如果在除 PostgreSQL。(这是最初的行为)

版本0.1

Released:October 16, 2013

为查找和DateArrayField添加了测试和修复程序。

版本0.0.1

Released:January 10, 2011

初始版本

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

推荐PyPI第三方库


热门话题
Java程序运行时错误   JavaAndroidStudio:与往常一样,四舍五入到next.5或.0   apache使用Java以表单数据形式上载文件   带矢量的java Freeflight相机如何正确旋转?   java如何以编程方式检索有关当前项目的语言、操作系统、体系结构等信息   java Twitter4J tweet实体?   java PdfBox编码异常   java在拖动未装饰的舞台时,如何强制光标停留在窗口上   JavaSpring注释扫描优化   java无法通过IntelliJ Idea在tomcat上运行服务   java在生命周期中如何拦截请求?   java中的数组返回错误