rdmysql3


Namerdmysql3 JSON
Version 0.3.8 PyPI version JSON
download
home_pagehttps://github.com/azhai/rdmysql3
SummaryA mysql db layer for python3, based on nakagami/CyMySQL
upload_time2024-08-21 02:29:20
maintainerNone
docs_urlNone
authorRyan Liu
requires_python<4.0,>=3.10
licenseMIT
keywords mysql database model
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # rdmysql3: A simple db layer based on CyMysql for Python 3.x

## Installation

    pip install [--no-deps] rdmysql3

## Usage:

``` python
from datetime import datetime, date
from rdmysql3 import (Database, Table, Daily,
        Row, Expr, And, Or, iter_query_daily)
import settings

Database.configures.update(settings.MYSQL_CONFS)

class UserProfile(Table):
    __dbkey__ = 'user'
    __tablename__ = 't_user_profiles'
    __indexes__ = ['username']

class UserEvent(Daily):
    __dbkey__ = "default"
    __tablename__ = "t_user_events"

query = UserProfile().filter_by(username = 'ryan')
ryan = query.one(model = Row)
if ryan:
    print ryan.to_dict()
    now = datetime.now()
    today = now.strftime('%Y%m%d')
    ryan['changed_at'] = now.strftime('%Y-%m-%d %H:%M:%S')
    ryan.change('nickname', 'Ryan-%s' % today)
    query.save(ryan)
    print(query.db.sqls)


def get_all_logins(model):
    q = model.filter_by(category="login").order_by("id", "DESC")
    return q.all(model=Row, reset=True)
query = UserEvent()
rows = iter_query_daily(query, get_all_logins,
        stop=date(2024,3,1), fuse=True)
print(query.db.sqls)
```

## Methods of Table

There are some methods for class named 'Table':

    insert      param *rows
                param **kwargs

    delete      param **where

    update      param changes : dict
                param **where

    save        param changes : dict / object
                param indexes : list (optional default=[])

    filter      param expr : Expr / str
                param *args

    filter_by   param **where

    order_by    param field     : str
                param direction : 'ASC' / 'DESC' (optional default='ASC')

    group_by    param field : str

    all         param coulmns : str (optional default='*')
                param limit   : int (optional default=0)
                param offset  : int (optional default=0)

    one         param coulmns : str   (optional default='*')
                param model   : class (optional default=dict)

    apply       param name : str
                param *args
                param **kwargs

    count,sum,max,min,avg       param *args
                                param **kwargs

## Methods of Monthly/Weekly/Daily

Monthly is a subclass of Table, There are other two methods for Monthly:

    backward    param monthes : int (optional default=1)

    forward     param monthes : int (optional default=1)

    set_date    param curr_date : date

    migrate     param prev_date : date (When curr_has_suffix is False)


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/azhai/rdmysql3",
    "name": "rdmysql3",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.10",
    "maintainer_email": null,
    "keywords": "mysql, database, model",
    "author": "Ryan Liu",
    "author_email": "azhai@126.com",
    "download_url": "https://files.pythonhosted.org/packages/73/3c/7e36063959c9eb9e6cf0308505327ebba2442d041170b594cceeed0d6edb/rdmysql3-0.3.8.tar.gz",
    "platform": null,
    "description": "# rdmysql3: A simple db layer based on CyMysql for Python 3.x\n\n## Installation\n\n    pip install [--no-deps] rdmysql3\n\n## Usage:\n\n``` python\nfrom datetime import datetime, date\nfrom rdmysql3 import (Database, Table, Daily,\n        Row, Expr, And, Or, iter_query_daily)\nimport settings\n\nDatabase.configures.update(settings.MYSQL_CONFS)\n\nclass UserProfile(Table):\n    __dbkey__ = 'user'\n    __tablename__ = 't_user_profiles'\n    __indexes__ = ['username']\n\nclass UserEvent(Daily):\n    __dbkey__ = \"default\"\n    __tablename__ = \"t_user_events\"\n\nquery = UserProfile().filter_by(username = 'ryan')\nryan = query.one(model = Row)\nif ryan:\n    print ryan.to_dict()\n    now = datetime.now()\n    today = now.strftime('%Y%m%d')\n    ryan['changed_at'] = now.strftime('%Y-%m-%d %H:%M:%S')\n    ryan.change('nickname', 'Ryan-%s' % today)\n    query.save(ryan)\n    print(query.db.sqls)\n\n\ndef get_all_logins(model):\n    q = model.filter_by(category=\"login\").order_by(\"id\", \"DESC\")\n    return q.all(model=Row, reset=True)\nquery = UserEvent()\nrows = iter_query_daily(query, get_all_logins,\n        stop=date(2024,3,1), fuse=True)\nprint(query.db.sqls)\n```\n\n## Methods of Table\n\nThere are some methods for class named 'Table':\n\n    insert      param *rows\n                param **kwargs\n\n    delete      param **where\n\n    update      param changes : dict\n                param **where\n\n    save        param changes : dict / object\n                param indexes : list (optional default=[])\n\n    filter      param expr : Expr / str\n                param *args\n\n    filter_by   param **where\n\n    order_by    param field     : str\n                param direction : 'ASC' / 'DESC' (optional default='ASC')\n\n    group_by    param field : str\n\n    all         param coulmns : str (optional default='*')\n                param limit   : int (optional default=0)\n                param offset  : int (optional default=0)\n\n    one         param coulmns : str   (optional default='*')\n                param model   : class (optional default=dict)\n\n    apply       param name : str\n                param *args\n                param **kwargs\n\n    count,sum,max,min,avg       param *args\n                                param **kwargs\n\n## Methods of Monthly/Weekly/Daily\n\nMonthly is a subclass of Table, There are other two methods for Monthly:\n\n    backward    param monthes : int (optional default=1)\n\n    forward     param monthes : int (optional default=1)\n\n    set_date    param curr_date : date\n\n    migrate     param prev_date : date (When curr_has_suffix is False)\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A mysql db layer for python3, based on nakagami/CyMySQL",
    "version": "0.3.8",
    "project_urls": {
        "Homepage": "https://github.com/azhai/rdmysql3",
        "Repository": "https://github.com/azhai/rdmysql3"
    },
    "split_keywords": [
        "mysql",
        " database",
        " model"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "622d18e7c877564f5404eaaddd64dd729abcecda882f5edcb99fbb833bed5420",
                "md5": "e85ef69c8eeb25d66b0c7e8e0450ed19",
                "sha256": "609ecccf383e30d2f4e7ab98169d5247c2690ed1a296293c2c7dba66d97d9772"
            },
            "downloads": -1,
            "filename": "rdmysql3-0.3.8-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "e85ef69c8eeb25d66b0c7e8e0450ed19",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.10",
            "size": 14245,
            "upload_time": "2024-08-21T02:29:18",
            "upload_time_iso_8601": "2024-08-21T02:29:18.399109Z",
            "url": "https://files.pythonhosted.org/packages/62/2d/18e7c877564f5404eaaddd64dd729abcecda882f5edcb99fbb833bed5420/rdmysql3-0.3.8-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "733c7e36063959c9eb9e6cf0308505327ebba2442d041170b594cceeed0d6edb",
                "md5": "0f3fdd536214e323e0c5982ffd13b6c8",
                "sha256": "eff29051823532a6d1cf52a550e8beac74ae96dbd29fb5871bbd403a4aeaa3e5"
            },
            "downloads": -1,
            "filename": "rdmysql3-0.3.8.tar.gz",
            "has_sig": false,
            "md5_digest": "0f3fdd536214e323e0c5982ffd13b6c8",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.10",
            "size": 12453,
            "upload_time": "2024-08-21T02:29:20",
            "upload_time_iso_8601": "2024-08-21T02:29:20.352299Z",
            "url": "https://files.pythonhosted.org/packages/73/3c/7e36063959c9eb9e6cf0308505327ebba2442d041170b594cceeed0d6edb/rdmysql3-0.3.8.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-08-21 02:29:20",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "azhai",
    "github_project": "rdmysql3",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "rdmysql3"
}
        
Elapsed time: 0.88494s