一个用于activipy的postgresql环境
activipy-pgsql的Python项目详细描述
使用postgresql作为activitystream数据存储的activipy环境 物体。
activipy module启用 在中使用ActivityStreams 您的应用程序,包括对不同“环境”的支持 扩展功能。
这个包提供了一个“pgsql”环境,它将存储方法映射到 使用psycopg2的postgresql查询。对象数据使用jsonb存储 数据类型以简化架构并提供最大性能。
示例代码
打开数据库:
>>> 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
创建新记录并保存到数据库:
>>> 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/'}
注意在这个例子中记录是如何被规范化的。在这种环境下 actor和object在单独的记录中创建,并生成引用 在父记录中。要检索原始的非规范化表单:
>>> 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?}}