docker版jxTMS使用指南:python服务之访问数据库

news/2024/7/7 21:24:31

本文讲解4.0版jxTMS中python服务访问数据库,docker版jxTMS使用指南:4.0版升级内容

docker版本的使用,请参考:docker版jxTMS使用指南

上篇文章讲解了如何用jxMysq的ORM定义并利用其类函数、对象函数访问数据库,本文讲解如何自己执行数据库访问。

当前,前提是自己对数据库、SQL比较熟悉。不过呢,jxTMS是docker镜像方式提供的,也就是说,真搞坏了,那删掉容器再重新启动一个新的就好了。

引用:

from jx.jxMysql import mysqlDB

mysqlDB是jxTMS提供的数据库连接修饰符,用该修饰符修饰的函数,将自动获得一个数据库连接,该函数就可使用此数据库连接来访问数据库;函数执行完毕,jxTMS会自动为该数据库连接做一次提交,即一个用mysqlDB修饰的函数中所有的数据库操作是一个数据库事务。

上一章节中的ORM中所有对数据库的增改查操作,也都是通过mysqlDB修饰的。

我们以ORM的类函数getByID函数为例来看一下mysqlDB是如何使用的:

@classmethod
@mysqlDB
def getByID(cls,db,clsName,id):
    sql = f'SELECT * FROM {clsName} WHERE ID={id} limit 1'
    db.cursor.execute(sql)
    return db.cursor.fetchone()

大家请看一下上篇文章中所讲的getByID的签名:

getByID(cls,dbName,clsName,id)

大家会发现:getByID在定义的时候,cls后的第一个参数是db,而调用时cls后的第一个参数是dbName。

这就是mysqlDB所起的作用:mysqlDB会帮助被修饰的函数建立并管理数据库连接。

以getByID为例,@mysqlDB给getByID函数添加了一个wrapper壳函数,在用户调用getByID时,这个wrapper壳函数会先得到执行:

1、其用送入的dbName来查找数据连接池获取一个到该数据库的连接

2、把这个数据库连接放入getByID参数表的第一个参数,将其它参数一并放入参数表,然后调用getByID函数

3、如果getByID函数正确执行完毕,提交该数据库连接

4、将getByID函数的返回值和True组成一个元组,返回给调用者

5、如果getByID函数执行错误,则回滚,并将错误记入日志,然后返回(None,False)

我们再举一个例子:上篇文章的getBy函数返回的是数据库中的数据,我们现在希望直接得到一个ORM对象,这样以后update、reset会非常方便。

class Demo(ORM):
    _ormAttr = {
        'Name':'string',
        ...
    }
    def __init__(self,data=None):
        super(Demo , self).__init__(dbName,'Demo',data=data)

    @classmethod
    @mysqlDB
    def _getByName(cls,db,name):
        sql = f'SELECT * FROM Demo WHERE Name={name} limit 1'
        db.cursor.execute(sql)
        return db.cursor.fetchone()

    @classmethod
    def getByName(cls,name):
        rs,rc = cls._getByName(dbName,name)
        if rc and not rs is None:
	        #上篇文章说过:查询得到的数据可以通过data()函数取得
	        return Demo(data=rs)
		 return None

调用Demo.getByName(name)就可以直接得到一个Demo的数据对象,然后调用set、update等函数来使用了,并可以用data()来获取查询到的数据。

参考资料:

jxTMS设计思想

jxTMS编程手册

下面的系列文章讲述了如何用jxTMS开发一个实用的业务功能:

如何用jxTMS开发一个功能

下面的系列文章讲述了jxTMS的一些基本开发能力:

jxTMS的HelloWorld


http://lihuaxi.xjx100.cn/news/1175617.html

相关文章

公司新来了个一年测试经验拿15K的,发现是个00后卷王····

个个都说想躺平了,可是有一说一,该卷的还是卷。 这不,前段时间我们公司来了个00后,才工作一年,跳槽到我们公司起薪15K,都快接近我了。后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了…

AB Test数学原理及金融风控应用

1 什么是AB Test AB测试是一种常用的实验设计方法,用于比较两个或多个不同处理或策略的效果,以确定哪个处理或策略在某个指标上表现更好。在AB测试中,将随机选择一部分用户或样本,将其分为两个或多个组,每个组应用不同…

chatgpt赋能python:Python文件拆分技巧详解

Python 文件拆分技巧详解 随着数据量的不断增大,我们经常需要处理非常大的数据文件,这时候就需要用到文件拆分技巧。在Python中,文件拆分可以帮助我们提高数据处理的效率,这是一个非常实用的技巧。在本篇文章中,我们将…

RTOS专栏(一) —— rt-thread简单介绍和qemu使用

本期主题: 简单介绍rt-thread介绍qemu和rt-thread怎么配合使用qemu的简单例子 rt-thread & qemu 1.rt-thread介绍2.qemu介绍3.搭建rt-thread和qemu开发环境4.简单例子 1.rt-thread介绍 RT-Thread 是一款完全由国内团队开发维护的嵌入式实时操作系统&#xff0…

java基础入门-15-【集合(Map可变参数集合工具类)】

Java基础入门-15-【集合(Map&可变参数&集合工具类)】 24、集合(Map&可变参数&集合工具类)双列集合的特点1.Map集合1.1 Map集合概述和特点【理解】1.2 Map集合的基本功能【应用】1.3 Map集合的获取功能【应用】1.4 Map集合的遍历(方式1)【应用】----- 键找值…

突破职场难题有效沟通、应对压力、提升能力,实现职场成功

在竞争激烈的职场中,我们经常面临各种职场挑战,例如如何有效沟通、应对工作压力以及提升职业能力等。下面分享一下在职场中的经验,帮助你提升职场技能,实现出色表现: 一、高效沟通: 倾听与理解&#xff1…

Go 设计模式中工厂方法模式应用

工厂方法模式(Factory Method Pattern)是一种常见的设计模式,它属于创建型模式。在 Go 语言中,工厂方法模式经常被用于对象的创建和初始化。 在工厂方法模式中,我们定义一个抽象的工厂接口,用于创建一系列相关或依赖的对象。具体的工厂实现了这个接口,并实现了工厂方法…

chatgpt赋能python:Python操作表格的全面指南

Python操作表格的全面指南 表格是一种非常实用的数据展示方式,程序员在处理数据以及展示数据时也经常使用表格。Python提供了多个强大的库操作表格,本文将为你介绍一些常见的Python操作表格的方式——包括读取、写入、处理和操作。 读取表格 Python提…