Skip to main content

easy to use mysql(kb)

Project description

Easy to use python sql(for kb-mysql first)

Based on SQLAlchemy

Quick Start

Installation: pip install easy_sql

1.config

Edit conf/conf.yml

mysql: # mysql config
  url: mysql://root:password@127.0.0.1:3306/db # mysql server
  encoding: utf-8
  pool_size: 5 # pool size
  echo: false # echo sql while executing

2.demo-mysql

Table demo:

-- ----------------------------
-- Table structure for demo
-- ----------------------------
DROP TABLE IF EXISTS `demo`;
CREATE TABLE `demo`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `data` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `time` datetime(0) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of demo
-- ----------------------------
INSERT INTO `demo` VALUES (1, 'ksust', '{}', '2020-09-29 15:44:57');
INSERT INTO `demo` VALUES (2, 'ksust', '{}', '2020-09-29 15:44:57');

demo-mysql:

"""
demo: using EasyMySQLBase
"""
import datetime
from sqlalchemy import Column, Integer, String, DateTime, or_
from easy_sql.easy_mysql_dao_base import EasyMySQLDAOBase
from easy_sql.easy_util import EasyMySQLUtil

# required
EasyMySQLUtil.init('../conf/conf.yml')


class Demo(EasyMySQLUtil.map_base):
    __tablename__ = 'demo'
    id = Column(Integer, primary_key=True)
    name = Column(String(255))
    data = Column(String(255))
    time = Column(DateTime())


# Demo DAO: to operate table 'demo'
class DemoDAO(EasyMySQLDAOBase):
    def __init__(self):
        # required
        EasyMySQLDAOBase.__init__(self, Demo)


def curd_example():
    """
    EasyMySQLUtil CURD
    :return:
    """
    demo_dao = DemoDAO()
    demo = Demo()
    demo.name = 'test'
    demo.data = '{}'
    demo.time = datetime.datetime.now()
    # create
    result = demo_dao.add(demo)
    print('MySQLUtil create', result.__dict__)
    # retrieve
    data_list = demo_dao.find_all(or_(Demo.name == 'ksust', Demo.id >= 40))
    print('MySQLUtil retrieve or_')
    for data in data_list:
        print(data.__dict__)
    data = demo_dao.find_one(Demo.name == 'yg', Demo.id > 40)
    print('MySQLUtil retrieve and_ -> one')
    print(data.__dict__)
    # update
    result = demo_dao.update(Demo.name == 'yg', time=datetime.datetime.now())
    print('MySQLUtil update', result)
    # delete
    result = demo_dao.delete(Demo.name == 'test')
    print('MySQLUtil delete', result)


def session_example():
    # select
    demo_dao = DemoDAO()
    cursor = demo_dao.session.execute('select * from demo')
    result = cursor.fetchall()
    print('session_example', result)


if __name__ == '__main__':
    curd_example()
    session_example()

3.demo-mysql-util

"""
demo: using EasyMySQLUtil to CURD operation
"""
import datetime
from sqlalchemy import Column, Integer, String, DateTime, or_
from easy_sql.easy_util import EasyMySQLUtil

# required
EasyMySQLUtil.init('../conf/conf.yml')


class Demo(EasyMySQLUtil.map_base):
    __tablename__ = 'demo'
    id = Column(Integer, primary_key=True)
    name = Column(String(255))
    data = Column(String(255))
    time = Column(DateTime())


def curd_example():
    """
    EasyMySQLUtil CURD
    :return:
    """
    demo = Demo()
    demo.name = 'test'
    demo.data = '{}'
    demo.time = datetime.datetime.now()
    # create
    result = EasyMySQLUtil.add(demo)
    print('MySQLUtil create', result.__dict__)
    # retrieve
    data_list = EasyMySQLUtil.find_all(Demo, or_(Demo.name == 'ksust', Demo.id >= 40))
    print('MySQLUtil retrieve or_')
    for data in data_list:
        print(data.__dict__)
    data = EasyMySQLUtil.find_one(Demo, Demo.name == 'yg', Demo.id > 40)
    print('MySQLUtil retrieve and_ -> one')
    print(data.__dict__)
    # update
    result = EasyMySQLUtil.update(Demo, Demo.name == 'yg', time=datetime.datetime.now())
    print('MySQLUtil update', result)
    # delete
    result = EasyMySQLUtil.delete(Demo, Demo.name == 'test')
    print('MySQLUtil delete', result)


def session_example():
    # select
    cursor = EasyMySQLUtil.session.execute('select * from demo')
    result = cursor.fetchall()
    print('session_example', result)


if __name__ == '__main__':
    curd_example()
    session_example()

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

easy_sql-0.0.4.tar.gz (4.9 kB view hashes)

Uploaded Source

Built Distribution

easy_sql-0.0.4-py3-none-any.whl (6.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page