marguerite
Marguerite provides a declarative, consistent accessor to data layer.
Science Score: 13.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
○.zenodo.json file
-
○DOI references
-
○Academic publication links
-
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (8.1%) to scientific vocabulary
Keywords
Keywords from Contributors
Repository
Marguerite provides a declarative, consistent accessor to data layer.
Basic Info
Statistics
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 2
- Releases: 0
Topics
Metadata Files
README.md
Marguerite
Marguerite provides a declarative, consistent accessor to data layer.
Dependencies
- Python 2.7 or later
- Werkzeug 0.12.7 or later
Installation
bash
$ pip install Marguerite
Usage
Example
Install requests as an example.
bash
$ 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
bash
$ pip install SQLAlchemy PyMySQL
create database
mysql 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+pymysql://root:@localhost/marguerite")
marguerite = Marguerite(engine) accessor = marguerite.get_accessor("path.to.User") ```
create table
python accessor.execute("create_table")check also
mysql 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
Owner
- Name: Yoshikatsu Higa
- Login: teitei-tk
- Kind: user
- Location: Tokyo, Japan
- Website: https://teitei-tk.com
- Twitter: teitei_tk
- Repositories: 143
- Profile: https://github.com/teitei-tk
GitHub Events
Total
Last Year
Committers
Last synced: 7 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| teitei-tk | t****k@g****m | 17 |
| dependabot[bot] | 4****] | 1 |
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 0
- Total pull requests: 8
- Average time to close issues: N/A
- Average time to close pull requests: 10 days
- Total issue authors: 0
- Total pull request authors: 2
- Average comments per issue: 0
- Average comments per pull request: 0.13
- Merged pull requests: 5
- Bot issues: 0
- Bot pull requests: 4
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
- dependabot[bot] (4)
- teitei-tk (4)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- pypi 8 last-month
- Total dependent packages: 0
- Total dependent repositories: 1
- Total versions: 4
- Total maintainers: 1
pypi.org: marguerite
Marguerite provides a declarative, consistent accessor to data layer.
- Homepage: https://github.com/teitei-tk/Marguerite
- Documentation: https://marguerite.readthedocs.io/
- License: MIT
-
Latest release: 1.0.2
published almost 9 years ago
Rankings
Maintainers (1)
Dependencies
- PyMySQL ==0.7.11 test
- SQLAlchemy ==1.1.7 test
- pytest ==3.0.7 test
- Werkzeug ==0.15.3