首页 > 数据库 >sqlalchemy模块——python的ORM数据库

sqlalchemy模块——python的ORM数据库

时间:2024-01-29 22:22:34浏览次数:31  
标签:session sqlalchemy python 数据库 msp ORM Table config id

介绍

ORM数据库,简单理解就是把数据库的表抽象成一个个类,对数据库进行增删改查的时候可以直接通过库中的属性进行访问,即用python抽象数据库,通过sqlalchemy自动转换成数据库sql语句执行,可以更专注于代码的实现,可以配合sqlacodegen直接映射已有的数据库表,实际操作的时候需要借助其他库,例如DRIVER='mysql+pymysql

新建session

from sqlalchemy import create_engine
from sqlalchemy.engine.url import URL
from sqlalchemy.orm import sessionmaker

from config import settings


def create_session(config):
    url = URL(
        drivername=config.DRIVER,
        username=config.USER,
        password=config.PASSWORD,
        host=config.HOST,
        port=config.PORT,
        database=config.DB,
    )
    engine = create_engine(url, echo=False)
    Session = sessionmaker(bind=engine)
    return Session()


def close_session(session):
    session.close()


msp_session = create_session(settings.DATABASE.CONFIG.MSP)
ob_session = create_session(settings.DATABASE.CONFIG.OB)

通过session进行数据库操作

  1. 记得导入创建好的session
  2. 查询一条
    res = msp_session.query(msp_Table.IftttRuleInfo).filter(msp_Table.IftttRuleInfo.id == rule_id).first()
  3. 查询所有
    res = msp_session.query(msp_Table.IftttRuleInfo).filter(msp_Table.IftttRuleInfo.id == rule_id).all()
  4. 更新
    res = msp_session.query(msp_Table.IftttRuleInfo).filter(msp_Table.IftttRuleInfo.id == rule_id).first()
    res.state = 1
    session.commit()  # 一定要提交,否则更新操作不生效
    
  5. join
    只有内连接或者左连接, 左外连接为outerjoin
sql = (
	msp_session.query(msp_Table.PushMarketSubTask)
	.join(msp_Table.IftttRuleTaskRelation, msp_Table.IftttRuleTaskRelation.send_task_id == msp_Table.PushMarketSubTask.task_id)
	.filter(msp_Table.IftttRuleTaskRelation.rule_id == rule_id)
)  # 这一步会生成sql, 可以打印出来看sql内容或者在创建session的时候create_engine(url, echo=True)
sql.all()  # 执行all()方法才会真正开始查询
  1. 表如何映射
    参考sqlacodegen直接映射已有的数据库表

标签:session,sqlalchemy,python,数据库,msp,ORM,Table,config,id
From: https://www.cnblogs.com/ishuangjin/p/17995489

相关文章

  • shelve模块——python内置关系型数据库
    介绍python内置的关系型数据库,key-value的方式进行存储,使用的时候可以像字典一样调用,一般数据需要持久化的时候会用到此数据库,比如测试环境的一些基本不会更改的配置信息,可以使用shelve库存储,后续调用的时候不必每次都从接口拉取使用导入importshelve写入#writeback参数......
  • redis模块——python操作redis
    介绍使用python操作redis库中的缓存,常见操作,测试后清除测试数据缓存,测试前清理缓存保证不被之前的测试数据影响到测试准确性使用安装pipinstallredis导入importredis模糊搜索查找keymsp_fc_rule=self.msp_redis.keys('msp-cache-frequency-limit-info:*')循环遍历k......
  • 安装dmPython
    一、安装dmPython对于达梦数据库,必须首先安装dmPython,才可以使用,在$DM_HOME/drivers目录下有多种类型的驱动:[dmdba@dm8~]$cd/dm/dmdbms/drivers/[dmdba@dm8drivers]$lsdcidotNetdpifldrgojdbclogmnrmsgparseodbcphp_pdopythonr2dbc[dmdba@dm8......
  • 在内网(不通公网)的情况下,使用pip安装python依赖包
    1.施工服务器后端部署一:准备一台环境与内网虚拟机相同的可以连接外网的虚拟机,python版本,操作系统版本保持一致二:在可以链接外网的机器上使用pip将依赖包的whl文件(也有可能是tar.gz或者tar格式,不过不影响后续使用)#将依赖下载到本地的某个文件中root@iZ8v2rbZ:/sdwork/pyyl#......
  • python操作yaml
     补充:yaml语法详见:yaml语法 yaml应用场景1、保存测试数据2、也可以保存自动化测试中的关联数据  安装yaml模块pipinstallpyyaml==5.4.1 读取yaml数据读取数据:load()或者full_load(),返回一个对象用例数据:case.yaml-caseId:1apiName:registerdescr......
  • python 14
    1.代码规范程序员写代码四有规范的,不只是实现功能而已。1.1名称在python开发过程中会创建文件夹/文件/变量等,这些在命名有一些潜规则(编写代码时也要注意pep8规范)文件夹,小写&小写下划线连接,例如:commands,data_utils等。文件,小写&小写下划线连接,例如:page.py,db_convert.p......
  • python之常用标准库-configparser
    configparser主要用于生成和修改常见配置文档,所以常见的操作为读和写1.写定义参数变量,赋值直接赋值法conf['test_default']={'test_line1':'test_line1'}通过增加section,set赋值法conf.add_section('test')conf.set('test','test_line1',�......
  • 常用的rddTransformation算子
    根据文章:暑假生活每周总结10  frompysparkimportSparkContext#创建SparkContext对象sc=SparkContext("local","RDDTransformationsExample")#假设我们有一个RDD数据源data=sc.parallelize([1,2,3,4,5])#1.map算子mapped_data=data.map(lambda......
  • Django 中使用ModelForm生成HTML标签
    在Django中,使用ModelForm来生成HTML表单标签是一种常见且高效的做法。ModelForm可以自动根据模型的字段生成对应的表单字段,这大大简化了表单的创建和处理过程。以下是如何在Django中使用ModelForm来生成HTML标签的基本步骤:步骤1:创建ModelForm首先,你需要为你的模型......
  • 【如何更新自定义IP】自定义IP 的.V文件修改以后,一定要先进入platform Designer更新IP
    最近自定义了一个IP,添加到qsys以后,generateHDL....。再后来再有改动IP的.v文件时,我直接点generateHDL...发现电路最终没有更新。 需要如下操作:先进入platformDesigner更新IP,右击选择IP选择Edit: 点击分析和综合IP文件:  以后再generateQsy文件: 这样工程的......