python实现sqlalchemy的使用

本文介绍了Python ORM库SQLAlchemy的使用,包括创建引擎和会话、定义类映射数据库表格,以及增删改查的基本操作。讲解了如何通过继承定义表格,以及将DataFrame数据导入数据库的进阶技巧。
摘要由CSDN通过智能技术生成


orm语句和SQL语句的区别

sqlAlchemy解读: https://zhuanlan.zhihu.com/p/265224273

sqlAlchemy解读:https://www.cnblogs.com/ybjourney/p/11832045.html

特点是操纵Python对象而不是SQL查询,也就是在代码层面考虑的是对象,而不是SQL,体现的是一种程序化思维,这样使得Python程序更加简洁易懂。

具体的实现方式是将数据库表转换为Python类,其中数据列作为属性,数据库操作作为方法。

  1. abstract # 辅助sqlAlchemy实现类的继承,自动继承属性,省去super()

  2. SQLAlchemy定义的ORM,在继承父级ORM时候,Foreign Key外键是不能继承的,它强制要求在子类中重新定义。

使用概述

一、创建引擎和会话

二、定义类来表示虚拟表格

在使用sqlalchemy访问数据库的时候,以类的形式表示表格,因此在使用之前,需要先定义类。

类的定义有三种:基类BASE、父类、子类

基类是sqlalchemy底层的;当需要一份数据切分为多个子表的时候,或多个表的字段一致时,可以使用一个父类定义字段的类型,多个子表继承父类的属性。

三、增删改查

一、创建引擎和会话

通过创建引擎、绑定引擎来创建会话,实现数据库的访问。

from sqlalchemy import create_engine                          # 引擎
from sqlalchemy.orm import sessionmaker                       # 创建orm的会话池,orm和sql均可以管理对象关系型数据库,需要绑定引擎才可以使用会话,

# 创建连接
engine = create_engine("mysql+pymysql://root:1234;@127.0.0.1/test", # 需要安装mysql和pymysql的模块,用户名:密码@ip地址/某个数据库
                       #echo=True,         # 打印操作对应的SQL语句
                       pool_size=8,       # 连接个数
                       pool_recycle=60*30 # 不使用时断开
                       )

# 创建session
DbSession = sessionmaker(bind=engine)  # 会话工厂,与引擎绑定。
session = DbSession()                  # 实例化

session.close()  # 关闭会话

二、定义类来表示虚拟表格

在使用sqlalchemy访问数据库的时候,以类的形式表示表格,因此在使用之前,需要先定义类。使用类的名称而不是tablename实现之后的增删改查。

# 导入定义类需要的模块
from sqlalchemy.ext.declarative import declarative_base       # 调用sqlalchemy的基类
from sqlalchemy import Column, Index, distinct, update        # 指定字段属性,索引、唯一、DML
from sqlalchemy.types import *                                # 所有字段类型

1. 直接建立一个可调用的表格

需要先继承基类,在定义__init__函数,设置输入参数。

# 创建库表类型
Base = declarative_base()  # 调用sqlalchemy的基类

class Users(Base):
    '''
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值