Skip to main content

easy_orm

Project description

example

1. Load db config

db_test = {
    "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):
        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.11-cp313-cp313-win_amd64.whl (420.5 kB view details)

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13

easyorm_py-1.0.11-cp312-cp312-win_amd64.whl (427.0 kB view details)

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12

easyorm_py-1.0.11-cp311-cp311-win_amd64.whl (436.7 kB view details)

Uploaded CPython 3.11Windows x86-64

easyorm_py-1.0.11-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.11-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for easyorm_py-1.0.11-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 004ebcba87545cdb128cb61a9983c426bc0a86ca96659fd8c1eed6301df5b101
MD5 f6c3c57f5babe2f21c5def867c1893f5
BLAKE2b-256 218dcd8b3b09a1ec13f5d6ab2d241fff2efc9490067778d382b360ca53f0ec51

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for easyorm_py-1.0.11-cp313-cp313-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3d02c4b1d6e52618a6b7efc82cd3af0d4a0af629f48f98854c85187690443165
MD5 55c827bd689adc4f20a45b9288b802db
BLAKE2b-256 83b52509d892afe6a4e5bb42b877e67daecae797105f8f7814bd97673fbfa004

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for easyorm_py-1.0.11-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 4156c62ddae01eb13509d4b21b77224f62a5e6d4bdc59ed199198b3189866a3c
MD5 f786a0b1923f95f1b9caff49dadf5c9e
BLAKE2b-256 92326efd6e09f643b99aa2b43b723371c60debf9f29fde59626aa87588906c87

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for easyorm_py-1.0.11-cp312-cp312-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 eb3cd169f3acc147c063fc468a22f96d6aa98ecf4ac8dd9f2816ee7e0e0c3790
MD5 5cc9e8a26a36e637efb0e3675fe5497e
BLAKE2b-256 c138f3711b167a850c3b012ce80a0d106ce3c9b39fe845382695acaa0aa375f0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for easyorm_py-1.0.11-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 0ecaf1741fb90f8a21b1227538bd7d323f32cb34c998f52587d1e6163028bee3
MD5 2da7f78e8233a04936e0bbfc5cf0cf08
BLAKE2b-256 ea25f2010c5f25b2e74fc3806fd8a6d46db6a0cd7d36b856dee17088e648763c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for easyorm_py-1.0.11-cp311-cp311-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5e115a4024227d84f7829d208569cf4a1ce80fb90c3af33d3656fd2ca1e813eb
MD5 a02b48299f1a72920a9693b7508bc324
BLAKE2b-256 ab7d889e59c8eb3c2d42242da46a905d0013b04ab1097e88274d607f90e5c0c6

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