Skip to main content

A PostgreSQL Environment for Activipy

Project description

An activipy environment to use PostgreSQL as the data store for ActivityStream objects.


The activipy module enables the use of ActivityStreams in your applications and includes the support of different “environments” to extend functionality.

This package provides a “pgsql” environment that maps storage methods to PostgreSQL queries using psycopg2. Object data is stored using the jsonb data type to simplify the schema and provide maximum performance.

Example Code

Open a database:

>>> from activipy import core, vocab
>>> from activipy.pgsql import pgsql
>>> db = pgsql.JsonPgSQL.open(
... host="<db_server>", dbname="<db_name>",
... user="<db_user>", password="<db_user_pass>")
>>> env = pgsql.PgSQLNormalizedEnv

Create a new record and save to database:

>>> post_this = core.ASObj({
...     "@type": "Create",
...     "@id": "http://tsyesika.co.uk/act/foo-id-here/",
...     "actor": {
...         "@type": "Person",
...         "@id": "https://tsyesika.co.uk/",
...         "displayName": "Jessica Tallon"},
...     "to": ["acct:cwebber@identi.ca",
...            "acct:justaguy@rhiaro.co.uk",
...            "acct:ladyaeva@hedgehog.example"],
...     "object": {
...         "@type": "Note",
...         "@id": "https://tsyesika.co.uk/chat/sup-yo/",
...         "content": "Up for some root beer floats?"}},
... pgsql.PgSQLNormalizedEnv)
>>> post_this.m.save(db)
{'@type': 'Create',
 '@id': 'http://tsyesika.co.uk/act/foo-id-here/',
 'actor': 'https://tsyesika.co.uk/',
 'to': ['acct:cwebber@identi.ca',
        'acct:justaguy@rhiaro.co.uk',
        'acct:ladyaeva@hedgehog.example'],
 'object': 'https://tsyesika.co.uk/chat/sup-yo/'}

Note how in this example the record has been normalized. In this environment the actor and object are created in separate records and made into references in the parent record. To retrieve the original denormalized form:

>>> normalized_post = pgsql.pgsql_fetch(
... "http://tsyesika.co.uk/act/foo-id-here/", db, env)
>>> normalized_post.m.denormalize(db)
<ASObj Create "http://tsyesika.co.uk/act/foo-id-here/">
>>> normalized_post.m.denormalize(db).json()
{'to': ['acct:cwebber@identi.ca',
        'acct:justaguy@rhiaro.co.uk',
        'acct:ladyaeva@hedgehog.example'],
 '@id': 'http://tsyesika.co.uk/act/foo-id-here/',
 '@type': 'Create',
 'actor': {'@id': 'https://tsyesika.co.uk/',
           '@type': 'Person',
           'displayName': 'Jessica Tallon'},
 'object': {'@id':
            'https://tsyesika.co.uk/chat/sup-yo/',
            '@type': 'Note',
            'content': 'Up for some root beer floats?}}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

activipy-pgsql-0.1.0.tar.gz (22.4 kB view details)

Uploaded Source

Built Distribution

activipy_pgsql-0.1.0-py2.py3-none-any.whl (7.9 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file activipy-pgsql-0.1.0.tar.gz.

File metadata

File hashes

Hashes for activipy-pgsql-0.1.0.tar.gz
Algorithm Hash digest
SHA256 66ae6a68cb40aa07a7903291481de8c8a7fac37e88b3f9c8f072857ba0d8d9c5
MD5 c9e3543395df7f9d06f3794de3a5ceda
BLAKE2b-256 7464b20b983aff690556c0e87d6f06c2faa2eb1ea5de234110a7412f13775eb3

See more details on using hashes here.

File details

Details for the file activipy_pgsql-0.1.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for activipy_pgsql-0.1.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 fa9bd4f214fb69a36c310fc87ed503ffdc7db2a31406ffc6a4024fc5314741ce
MD5 dcab6617278fa59a946b29fc7e4382ea
BLAKE2b-256 4d323c0e354087ce60ab671a173e1980e25304a4fb63989f6ada48c7ac0e9cc9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page