Skip to main content

easy_orm

Project description

example

1. Load db config

db_test = {
    "primary": "default",
    "raw_sql": True,
    "mapper_xml_path": "test_xml",
    "default": {
        "db_type": "mysql",
        "host": "127.0.0.1",
        "port": 3306,
        "user": "root",
        "password": "123456",
        "database": "template",
    },
    "test": {
        "db_type": "mysql",
        "host": "127.0.0.1",
        "port": 3306,
        "user": "root",
        "password": "123456",
        "database": "template",
    }
}

from easy_orm import EasyOrmConfig, DBConfig
db_config = DBConfig(db_test)
EasyOrmConfig(db_config)

2. edit xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "">
<mapper namespace="TestMapper">

    <select id="find_data_by_ids">
        select id, username from test where id in
        <foreach collection="id_list" item="id" open="(" close=")" separator=",">
            #{id}
        </foreach>
    </select>

    <select id="test_page">
        select id, username from test
    </select>

    <select id="test_where" resultType="model.user.User">

        select id, username from test

        <where>
            <if test="params.get('id') is not None">
                id = #{id}
            </if>
        </where>

    </select>

    <insert id="add_data">
        insert into test (nickname, username) values ('xxx', 'xxx1')
    </insert>


    <update id="update_data_by_id">
        update test set nickname = #{nickname} where id = #{id}
    </update>


    <delete id="delete_data_by_id">
        delete from test where id = #{id}
    </delete>

</mapper>

3. Extend BaseMapper and Use

# TestMapper.py


class BaseMapper(Generic[T]):


    @classmethod
    def session(cls):
        """
        get db session
        """

    def add(self, data: Any):
        """
        add
        :param data:
        :return:
        """
        

    def add_all(self, data: list):
        """
        add_all
        :param data:
        :return:
        """

    def select_all(self, statement=None):
        """
        select all
        :param statement:
        :return:
        """

    def select_one(self, statement=None):
        """
        select one
        :param statement:
        :return:
        """
        

    def select_by_id(self, id: int):
        """
        select by id
        :param id:
        :return:
        """

    def update_by_id(self, data: dict, selective: bool=False):
        """
        upate by id
        :param data:
        :param selective:
        :return:
        """

    def delete_by_id(self, id: int):
        """
        delete by id
        :param id: 
        :return: 
        """
        ...

from easy_orm import BaseMapper, Page, select_one, delete, datasource, db_session
from model.user import User

class TestMapper(BaseMapper[User]):

    def find_data_by_ids(self, id_list: list): ...

    @select_one('select * from test where id = #{id}')
    def find_data_one(self, id: int): ...

    def test_page(self, page: Page): ...

    def test_where(self, id: int) -> list[User]: ...

    def add_data(self): ...

    def update_data_by_id(self, nickname: str, id: int): ...

    @delete('delete from test where id = #{id}')
    def delete_data_by_id2(self, id: int): ...

class TestService:

    @datasource("default", True)
    def test_find_user_one(self):
        TestMapper().find_data_one(1)
        self.test_find_user_one2()

    @datasource("test", True)
    def test_find_user_one2(self):
        TestMapper().find_data_one(1)
    
    def test(self):
        id = TestMapper().insert({"field": "test"})
        TestMapper().select_by_id(1)
        TestMapper().update_by_id({'id': 1, "field": "test2"})
        TestMapper().delete_by_id(1)
    
    def test_ori_session(self):c
        with db_session() as session:
            d = session.execute(text("select * from user")).first()
            print(d._asdict())

    
if __name__ == '__main__':
    
    test_service = TestService()
    test_service.test_find_user_one()
    
    test_mapper = TestMapper()
    test_mapper.find_data_by_ids([1, 2, 3])

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

easyorm_py-1.0.13-cp313-cp313-win_amd64.whl (418.6 kB view details)

Uploaded CPython 3.13Windows x86-64

easyorm_py-1.0.13-cp313-cp313-manylinux2014_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.13

easyorm_py-1.0.13-cp312-cp312-win_amd64.whl (425.1 kB view details)

Uploaded CPython 3.12Windows x86-64

easyorm_py-1.0.13-cp312-cp312-manylinux2014_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.12

easyorm_py-1.0.13-cp311-cp311-win_amd64.whl (434.0 kB view details)

Uploaded CPython 3.11Windows x86-64

easyorm_py-1.0.13-cp311-cp311-manylinux2014_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.11

File details

Details for the file easyorm_py-1.0.13-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for easyorm_py-1.0.13-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a673c0b4dd0ae192bd01eb5f1bcb17a2433c2ede6901d19267e2c36add04c786
MD5 c7ec1a95e655135087eddd47ce6bba61
BLAKE2b-256 bdce8cfad5609c2f08cbafa5dbbd2180a1b831b3614d78e463474e5047cbb516

See more details on using hashes here.

File details

Details for the file easyorm_py-1.0.13-cp313-cp313-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for easyorm_py-1.0.13-cp313-cp313-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cfaedbe296ea9ca90b462ce845592bc27d0b3c6a8bab74cfe6686340e29c22ff
MD5 9d3c5a69f7139e5c2f732198f03006d4
BLAKE2b-256 36688c3e33dbf383accc10eca45dc8774c246013412ca082a295a2c6557ec65c

See more details on using hashes here.

File details

Details for the file easyorm_py-1.0.13-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for easyorm_py-1.0.13-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 36d31a37fc668bb1f022f1b6f62ef44ca22a29506a9085c621585bf47dc3fe97
MD5 4b2677d06a1a7ec270c29641354e272a
BLAKE2b-256 dba9187096f2914b3e23ac27b8d414178011bb705a002dafee8e706ad3da5db2

See more details on using hashes here.

File details

Details for the file easyorm_py-1.0.13-cp312-cp312-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for easyorm_py-1.0.13-cp312-cp312-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dd84bc3a0a77d85ab04c52b4c714737e4fab74c683954d485bd5ffd0db75748e
MD5 7d84b56171814bf4e4f98e4e9e8159ed
BLAKE2b-256 fd2c1e80a470dc2f326e2603bf2f607d392bf4a4c987b2de29620ff4c2a21465

See more details on using hashes here.

File details

Details for the file easyorm_py-1.0.13-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for easyorm_py-1.0.13-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 1d9ebefa505a1ba27b9a3a83290629ba0c0b9fb5c144effcafb434e6550bfecb
MD5 313aff0da2e6ab7cd55aa7cc5c4d4432
BLAKE2b-256 b1698b0aa21fecc2e72ca9023fd667879b508c846c17c37e54fed94ce220c56d

See more details on using hashes here.

File details

Details for the file easyorm_py-1.0.13-cp311-cp311-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for easyorm_py-1.0.13-cp311-cp311-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 80a0e25190475b39fe848dceb9e144f122144f05d21da67746d38c166429dfa0
MD5 df3e9307361293eab46e4ec810948d4e
BLAKE2b-256 8143511912292fb2489fa286388795cd13a54abdda9b253b79f9ac9ee4aa4190

See more details on using hashes here.

Supported by

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