WIP:plpython3

来自 PostgreSQL 维基
跳转到导航跳转到搜索

功能方面,这已经完成了——实际上,我计划删除一些功能。如果你有兴趣在 PostgreSQL 中看到它,请发邮件给我,因为我想知道(x <at sign> jwp.name)。

信息

pl/python3 是 Python 3.x 的过程语言实现。

这个 WIP 针对 8.5 的补丁。

git 分支位于 http://git.postgresql.org/gitweb?p=plpython3.git;a=summary

进度

  • 基于模块的函数
  • 函数 PEP302 支持(__loader__,用于 linecache 支持)
  • CONTEXT 中的追踪信息
  • IST 支持(子事务)
  • 数据库错误支持;Postgres 错误 -> Python 异常 -> Postgres 错误
  • SRFs(VPC 和 物化 & Postgres.Cursor 优化)
  • 触发器(语句 & 行)
  • 类型接口(原生类型)
  • 多态类型。
  • SPI/准备好的语句和游标
  • Postgres.execute(sql_statements_string) (SPI_execute_statements() 用于批量、无参数的 DDL/DML)
  • 大型对象类(io.IOBase;一些协议一致性目前无法实现)
  • @pytypes 装饰器,用于将 Postgres.Object 参数转换为标准 Python 类型
  • 属性用于获取时间类型的部分(ts.day、ddate.month、intv.second 等)
  • 直接函数调用(仅限于非多态、非 SRF 和非 TRIGGER)
  • 有状态函数(主函数是生成器的普通函数 =)
  • DO 语句支持。
  • Postgres.preload(...) (加载指定模式中的所有 Python 函数)
  • 测试 [基本 I/O、ISTs、错误、SRFs、触发器、域、枚举、SPI、多态]
  • 包含大量参考部分的文档

快速入门

使用 git 进行基本安装。

获取带有 pl/python3 的 PostgreSQL

使用 git,pg 的全新克隆(如果你还没有的话)

git clone git://git.postgresql.org/git/postgresql.git
cd postgresql

获取并检出 plpython3 分支

git remote add plpython3 git://git.postgresql.org/git/plpython3.git
git fetch plpython3
git branch plpython3 plpython3/plpython3
git checkout plpython3

安装带有 pl/python3 的 PostgreSQL

与 pl/python 一样,pl/python3 可以使用配置参数进行配置和安装:--with-python3

$ ./configure --with-python3

但是,对于测试,建议使用以下方法

$ env "CFLAGS=-O0 -ggdb3" ./configure --enable-depend --enable-debug --enable-cassert --with-python3
# Don't forget to add an appropriate --prefix=

这依赖于 PATH 中可以访问 python3 可执行文件。(注意:目前不支持 Python 3.0。请使用 Python 3.1

安装完成后,可以使用以下方法在数据库中创建语言

CREATE LANGUAGE plpython3u;

这使用与其他 PL 相同的 pg_pltemplate 条目。

文档

暂时可在此处获取

http://python.projects.postgresql.org/pldocs/plpython3.html