• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Aestate: 为Python提供数据库多样化操作的ORM工具包

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

Aestate

开源软件地址:

https://gitee.com/aecode/aestate

开源软件介绍:

Aestate —— 多样化数据库查询

star star star

介绍

当前测试通过数据库有:

  • MySql8.0
  • Sqlserver2019
  • PostgreSQL 13.3

Aestate Framework 是一款基于Python语言开发的ORM框架, 你可以使用多种方式去实现基于对象方式的查询.

也就是相对于Java语言的Mybatis-Plus

比如使用类似Django的模式去使用:modelClass.orm.filter(*args, **kwargs)

或者SQLAlchemy的方式:find().where(**kwargs).group_by(*args)

或者像JavaHibernate一样:

@SelectAbst()def find_all_F_where_id_in_and_name_like_order_by_id(self, **kwargs) -> list: ...@Select("SELECT * FROM demo WHERE id=#{id} AND name=#{name}")def find_all_where_id(self, id, name): ...

或者像JavaMybatis使用xml

<?xml version="1.0"?><aestate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="aestate  https://gitee.com/aecode/aestate-xml/blob/main/v1/tags.xsd"         xmlns="aestate">    <template id="templateField">        id,name,password,create_time,update_time        <description>测试模板</description>    </template>    <resultMap id="resultMapLeftJoin" type="example.table.demoModels.Demo">        <result field="d1_id" properties="id"/>        <result field="d1_name" properties="name"/>        <result field="d1_password" properties="password"/>        <foreign type="example.table.demoModels.Demo" name="demoJoin">            <result field="d2_id" properties="id"/>            <result field="d2_name" properties="name"/>            <result field="d2_password" properties="password"/>        </foreign>    </resultMap>    <item id="findAllById">        <select resultType="resultMapLeftJoin">            SELECT            <!-- 导入查询的字段 -->            <!--            <include from="templateField"/>-->            <include from="tempSymbol"/>            FROM demo as d1 LEFT JOIN demo as d2 ON d2.id = d1.id WHERE d1.id >            <switch field="id">                <case value="10">10</case>                <case value="5">5</case>                <default>#{id}</default>            </switch>            <if test="#{id}&gt;=20">AND d2.id > 20</if>            <else>AND d2.id > 10</else>            LIMIT 2            <description>                SELECT d1.`name` as d1_name,d1.`password` as d1_password,d1.`id` as d1_id, d2.`name` as                d2_name,d2.`password` as d2_password,d2.`id` as d2_id FROM demo as d1 LEFT JOIN demo as d2 ON d2.id =                d1.id WHERE d1.id > %s AND d2.id > 10 LIMIT 2            </description>        </select>    </item></aestate>

相对于其他库有什么区别?

  • 首先Aestate是基于Django、SQLAlchemy、Mybatis、Mybatis-Plus、SpringJPA整合起来的一个数据库支持库,融合了这么多第三方库首先一点就是他的操作方式是多种多样的。目前已有六种操作方法, 也就是Django模式、SQLAlchemy模式、xml模式、Mybatis-Plus模式,注解模式,原生模式。

  • 其次就是在兼容性方面,由于这个世界上的数据库种类太多了没办法做到统一, Aestate保留了对其他小众数据库的实现接口,尽可能多兼容数据库。

  • 数据库表方面,Django是会生成数据django自己系统内部的表,在迁移的时候呢如果做错一步可能对于新手 来讲后面的修复操作是极其难的,也未必能够在短时间内定位问题并修复。Aestate为了解决这个问题,将make和手动建表尽可能的兼容,不会生成额外的表和数据,也不会捆绑某个特定系统,将pojo/model复制出来可以直接为下一个项目使用。

  • 缓存方面参考了Mybatis的实现方法并略微修改,Aestate有两个内存管理模块,用于保证数据的完整性, 当一些特别大的数据占满缓存时,Aestate会尽量多的去分配内存保证数据完整性,除外才会去管理内存(不建议操作大于系统内存2/10的数据)。Aestate有弹性内存管理方式,会根据系统的执行自动调整缓存大小,尽可能的加快运行速度,减少对数据库的连接次数。

  • 自带日志和美化,不需要下载其他插件就可以把日志变色,自动保存日志,这个功能对于爱美的大兄弟简直就 是神仙般的存在(当然也可能只有我喜欢装逼)

  • 还有很多......

寻找志同道合的朋友一起开发Aestate
作者QQ:2075383131(云)
qq群:909044439(Aestate Framework)

关于教程和文档地址

因为开发aestate的同学大部分都是来自各地的穷学生,我已经没有办法支付的起下一年的服务器费用(508.02元), 因为这是我63%的生活费。

以后教程和文档更新依靠CSDN、OSCHINA、知乎、bilibili以及各位捐献云服务器和托管平台等

csdn: AECODE
OSCHINA: CACode
知乎: CACode
bilibili大学堂: 你在写臭虫?
官网域名: cacode.ren
文档官网域名: doc.cacode.ren
Gitee官方: https://aecode.gitee.io/aestate-doc
项目体系结构: aecode.gitee.io/aestate

先决条件

Python >=3.6 (其他版本没试过)
教程文档地址:http://doc.cacode.ren

版本说明

基础需要2.7以上的python版本,对于只需要执行sql可以使用2.7以上(不建议)

最优的办法是使用3.6以上,可以使用绝大部分功能

由于1.0.7增加异步方法,需要异步执行的小伙伴可以使用python>=3.7.10以上版本

安装

目前源代码仅开放在gitee,处于组织CACode下,仓库地址为:aestate使用pip或anaconda安装Aestate

pip install aestateconda install aestate 

注意请不要用国内镜像下载,只发布在 pypi.org 也就是pip的官方源下

qq群:909044439

我是新手,怎么快速入门呢?

你可以前往https://doc.cacode.ren跟着官方文档入门
也可以在B站 你在写臭虫 看视频学专治疑难杂症,请前往csdn查看官方解决方案: Aecode的csdn.net

操作方式太多了一下子学不会怎么办?

Aestate有五种方式,不是非要全部都会,我当时写的时候只是为了把很多语言的操作方式用Python实现,然后让其他语言转Python的开发者能够找到熟悉的感觉,例如

  1. Java专业户:用xml、方法名和注解
  2. Python专业户:用Django模式和SQLAlchemy模式
  3. 纯萌新:老老实实写SQL,先把基础练好

谁在使用 Aestate Framework 开发网站

CACode: https://cacode.ren
CocoZao 爬虫:https://ccz.cacode.ren

开源示例项目:gitee/aestate-example

更多示例项目请前往


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap