测试笔记:学习 sqlalchemy 框架

本文介绍了SQLAlchemy作为Python的ORM框架,详细讲解了如何通过它来映射数据库表,并进行了DDL和DML操作的示例,包括创建表、删除表、插入数据、查询数据、更新数据和删除数据。
摘要由CSDN通过智能技术生成

1. 介绍

sqlalchemy 是一款ORM框架,可以将关系型数据库的表映射成类,将表里的每条记录映射成类的实例对象,使用其提供的api,实现了通过对类进行操作进而操作数据库。这里需要明确,sqlalchemy 本身不会直接操作数据库,而是借助已有的可以操作数据库的库进行操作,例如pymysql。

2. 常用的参数说明

2.1 数据类型(定义列的时候用到)

类型名 python中的类型 说明
Integer int 普通整数,32位置
SmallInteger int 普通整数,16位
BigInteger int 或 long 不限制精度的整数
Float float 浮点数
Numeric decimal.Decimal 普通整数,32位
String str 变长字符串
Text str 变长字符串,对较长或者不限长度的字符串做了优化
Boolean boolean 布尔值
Date datetime.date 时间
Time datetime.datetime 日期时间
LargeBinary str 二进制文件

2.2 表选项(定义列的时候用到)

选项名 说明
primary_key 布尔类型,为True时,设置该列为主键
unique 布尔类型,为True时,表示该列为不可有重复值
index 布尔类型,为True时,设置该列为索引
nullable 布尔类型,为True时,表示该列不可为空值
default 为该列设置默认值
comment 为该列加注释

3. DDL操作

3.1 创建表

Base.metadata.create_all(engine)
from random import random

import pytest

from sqlalchemy import create_engine, Column, Integer, String, Float, and_, or_, func
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

"""
    引擎:实际用来操作数据库的
"""


@pytest.fixture(scope="session")
def engine():
    # 连接数据库,这里需要明确。SQLALchemy本身是不会操作数据库的,而是借助能操作数据库的库(pymysql)来操作
    return create_engine("mysql+pymysql://root:123456@127.0.0.1:3306/supermarket?charset=utf8mb4", max_overflow=5)


@pytest.fixture(scope="session")
def session(engine):
    return sessionmaker(bind=engine)()


"""
    映射类:一张表映射成一个类
"""
# 基类,映射类都需要继承该基类
Base = declarative_base()


class Computer(Base):
    __tablename__ = "computer"
    id = Column(Integer, primary_key=True, auto_increament=True)
    name = Column(String(20))
    desc = Column(String(100))
    price = Column(Float)

    # 实例化对象后,输出的内容
    def __repr__(self):
        tpl = f"Computer(id={
     self.id}, name={
     self.name}, desc={
     self.desc}, price={
     self.price})"
        return tpl


class Phone(Base):
    __tablename__ = "phone"
    id = Column(Integer, primary_key=True, auto_increment=True, comment="主键")
    name = Column(String(20), comment="手机名称")
    desc = Column
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值