Marguerite provides a declarative, consistent accessor to data layer.
Project description
Marguerite
Marguerite provides a declarative, consistent accessor to data layer.
Dependencies
Python 2.7 or later
Werkzeug 0.12.7 or later
Installation
$ pip install Marguerite
Usage
Example
Install requests as an example.
$ pip install requests
define data layer accessor, and writen access structure ```python from marguerite import AbstractStructure, AbstractAccessor, Order from marguerite.accessors import bind
class Accessor(AbstractAccessor): def prepare(self, name, value): order = self.structure.get_order(name) return bind(order, value)
def create(self, name, value): order = self.prepare(name, value) return requests.post(order).json() def get(self, name, value={}): order = self.prepare(name, value) return requests.get(order).json()
class UserStructure(AbstractStructure): accessor = Accessor
orders = Order( user = "https://example.com/users/:id", create = "https://example.com/users/:id?=username=:username" )
```
get data layer accessor object ```python from marguerite import Marguerite
marguerite = Marguerite() accessor = marguerite.get_accessor(“path.to.UserStructure”) ```
fetch data ```python # execute get logic result = accessor.get(“user”, { “id”: 1 }) print(result) # {“id”: 1, “username”: “john”…}
execute post logic
result = accessor.create(“create”, { “id”: 2, “username”: “marguerite” }) print(result) # {“status”: “success”, {“result”: {“id”: 2, “username”: “marguerite”…}}} ```
SQLAlchemy
$ pip install SQLAlchemy MySQL-python
create database
mysql> create database marguerite; Query OK, 1 row affected (0.00 sec)
define database structure ```python from marguerite import Order from marguerite.accessors.sql import SQLAlchemyAccessor from marguerite.structures.sql import SQLAlchemyStructure
class User(SQLAlchemyStructure): struct = { “id”: int(), “name”: str(), “email”: str(), }
orders = Order( create_table = """ CREATE TABLE IF NOT EXISTS __table__( id int(11) unsigned NOT NULL AUTO_INCREMENT, name varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (id) ) ENGINE=InnoDB CHARSET=utf8; """, drop_table = """ DROP TABLE IF EXISTS __table__ """, insert = """ INSERT INTO __table__(name) VALUES (:name) """, select = """ SELECT * FROM __table__ WHERE id = :id """, find = """ SELECT * FROM __table__ WHERE id in (:id1, :id2) """ )
```
get database accessor object ```python from marguerite import Marguerite
engine = create_engine(“mysql+mysqldb://root:@localhost:3309/marguerite”)
marguerite = Marguerite(engine) accessor = marguerite.get_accessor(“path.to.User”) ```
create table
accessor.execute("create_table")
check also
mysql> use marguerite Database changed mysql> show tables; +----------------------+ | Tables_in_marguerite | +----------------------+ | user | +----------------------+
fetch data ```python # insert record at user table accessor.execute(“insert”, {“name”: “john”})
get record
row = accessor.get(“select”, { “id”: 1 }) print(row) # {“id”: 1, “name”: “john”, “email”: “”}
find records
rows = accessor.find(“find”, { “id1”: 1, “id2”: 2 }) print(rows) # [{“id”: 1, “name”: “john”, “email”: “”}] ```
LICENSE
Apache License 2.0
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
File details
Details for the file Marguerite-1.0.2.tar.gz
.
File metadata
- Download URL: Marguerite-1.0.2.tar.gz
- Upload date:
- Size: 6.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c815fb90d7d5c5c122fcc0352da30e3cc82c0f70bff2121b474cee792c8c6ef2 |
|
MD5 | 3d9e3905efa407425a35846378198190 |
|
BLAKE2b-256 | ab38b3756fb428e5634bb4608f7463263bce5eb81b244cb7d5f96d8cbb6abf2c |