Python教程二:使用Aestate操作数据库

 教程一:Python安装教程

Python教程一:Python环境安装(Anaconda3版本)_Cx_轩的博客-CSDN博客

--------------------------------------------------------------------------------------

前言

使用Aestate开源多样化数据库查询框架,进行操作数据库;方便作为一个JAVA工程师的我通过此框架去学习和使用Python。

此框架强大之处:(摘录于此开源框架内容介绍)

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

(本人熟练使用mp(Mybatis-Plus),所以此框架非常适合我)

一、安装Aestate

Aestate框架官网:Aestate

里面有详细教程我这边不在累述,此博客主要为记录。

注:安装过程中建议使用命令:

pip install aestate -i https://pypi.org/simple

在官网中有介绍不建议使用国内镜像。

二、开始使用

参考官网教程。

三、Demo代码

1.项目结构:

2.新建py文件:db_base.py

from aestate.work.Config import MySqlConfig
from aestate.work.Adapter import LanguageAdapter

#连接mysql数据库
class DbApater(LanguageAdapter):
    def __init__(self):
        self.funcs['love'] = self.love

    def love(self, instance, key, value):
        self._like_opera(instance, key, value)

class DatabaseConfig(MySqlConfig):
    def __init__(self):
        # 设置全局打印sql语句
        self.set_field('print_sql', True)
        # 设置全局插入语句返回最后一行id
        self.set_field('last_id', True)
        # 适配器 1.0.4版本更新之后在初始化部分使用,而非super()
        self.adapter = DbApater()
        super(DatabaseConfig, self).__init__(
            # 数据库地址
            host='localhost',
            # 数据库端口
            port=3306,
            # 数据库名
            database='test',
            # 数据库用户
            user='root',
            # 数据库密码
            password='xxxxx',
            # 数据库创建者,如果你用的是mysql,那么这里就是pymysql,如果用的是sqlserver,那么这里就应该是pymssql
            db_type='pymysql'
        )

3.新建db_table_template.py

from aestate.dbs._mysql import tag
from base.utils.db_base import DatabaseConfig
from aestate.work.Manage import Pojo

class table_template(Pojo):
    def __init__(self, **kwargs):
        """
        模板类对象  配置根据官网配置后微调 modify by cx 
        如果统一规则了可以使用此模板对象 添加固定字段,否则不建议使用
        特别是针对已经存在的表结构且生成表时没有一个固定的规则(很多规范都没有延续下去的项目)                
        """
        # # 创建一个自增的主键id,并且不允许为空
        # self.id = tag.intField(primary_key=True, auto_field=True, is_null=False, comment='主键自增')
        # # 创建一个创建时间,并设置`auto_time=True`,在第一次保存时可以为其设置默认为当前时间
        # self.create_time = tag.datetimeField(auto_time=True, is_null=False, comment='创建时间')
        # # 创建一个更新时间,并设置`update_auto_time=True`,保证每次修改都会更新为当前时间
        # self.update_time = tag.datetimeField(update_auto_time=True, is_null=False, comment='更新时间')
        # 设置config_obj未db_conf的对象,
        super(table_template, self).__init__(
            # 导入配置类
            config_obj= DatabaseConfig(),
            # 设置日志配置
            log_conf={
                # 保存位置
                'path': "/log/",
                # 是否允许保存日志
                'save_flag': True,
                # 当日志到达多少MB时删除日志重新记录
                'max_clear': 100
            },
            # 必备的字段,每一个Pojo对象都必须包含一个`**kwargs`
            **kwargs)

4.创建area.py文件(用于测试表查询area对象)

from base.utils.db_table_template import table_template
from aestate.dbs import _mysql
from sklearn import utils
from aestate.work.Annotation import Table, Select, SelectAbst, ReadXml, Item, AopModel


def Before():
    print("before")


def After(result):
    print('result', result)

# 使用表的全名为类名设置表的名称
@Table(name='area', msg='地区')
class Area(table_template):

    def __init__(self, **kwargs):
        # 新建一个名为name的字段,长度为20,不允许为空
        self.id = _mysql.tag.intField(length=20, is_null=False, comment='id')
        self.area = _mysql.tag.varcharField(length=20, is_null=False, comment='地区')
        self.areacode = _mysql.tag.varcharField(length=20, is_null=False, comment='地区码')

        # 使用内部变量设置表的名称
        # self.__table_name__ = 'demo'
        # 这里不设置`is_delete`字段
        super(Area, self).__init__(**kwargs)

    # @Select("SELECT * FROM area WHERE id=${id} AND area=#{area1}")
    # def find_all_where_id(self, id, area1): ...

5.创建area_service.py文件(用于执行查询服务)

import sys
import os
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)
from base.entity.area import Area
import pandas
# 一定要先实例化
area = Area()

# # 查询所有数据
r1 = area.find_all()

print('r1',type(r1),r1.get(0))
for r in r1:
    print(r.area)


df = pandas.DataFrame.from_dict(r2.to_dict())
print(df)

-------------------------------------------------------------------------------------------------------------------

教程三:使用Flask搭建web服务

Python教程三:使用Flask搭建web服务_Cx_轩的博客-CSDN博客

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值