# 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"
}