首页 > 数据库 >SQLAlchemy模块

SQLAlchemy模块

时间:2024-10-09 11:49:20浏览次数:3  
标签:engine SQLAlchemy name text persons session dict 模块

1、执行原生SQL

from sqlalchemy import create_engine, text

# 创建engine对象
engine = create_engine("sqlite:///demo.db", echo=False)
with engine.connect() as con:
    # 先删除persons表
    con.execute(text('drop table if exists persons'))
    # 创建一个persons表,有自增长的id和name,age
    con.execute(text(
        "CREATE TABLE persons (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,name VARCHAR (32),age REAL,datetime TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%S+08:00','now','localtime')))"))
    # 插入两条数据到表中
    con.execute(text('insert into persons(name,age) values("张三","20")'))
    con.execute(text('insert into persons(name,age) values("李四","30")'))
    # 执行查询操作
    results = con.execute(text('select * from persons'))
    # 获取结果
    # datares = results.fetchall()
    # 将结果转换为字典格式
    data = [dict(zip(results.keys(), result)) for result in results.fetchall()]
    print(data)

 2、ORM

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import declarative_base
from sqlalchemy.orm import sessionmaker

# 连接SQLite数据库
engine = create_engine('sqlite:///demo.db', echo=False)

# 创建基类
Base = declarative_base()


# 创建表
class Book(Base):
    __tablename__ = 'books'

    id = Column(Integer, primary_key=True)
    title = Column(String)
    author = Column(String)
    year = Column(Integer)

    def __repr__(self):
        return f"<Book(id='{self.id}',title='{self.title}', author='{self.author}', year={self.year})>"


# 创建表
Base.metadata.create_all(engine)

# 创建Session
Session = sessionmaker(bind=engine)
session = Session()

# 插入数据
book1 = Book(title='The Great Gatsby', author='F. Scott Fitzgerald', year=1925)
book2 = Book(title='To Kill a Mockingbird', author='Harper Lee', year=1960)
book3 = Book(title='1984', author='George Orwell', year=1949)
session.add(book1)
session.add(book2)
session.add(book3)
session.commit()
session.close()


# 将查询结果转换为字典格式
def to_dict(self):
    return {c.name: getattr(self, c.name, None) for c in self.__table__.columns}


Base.to_dict = to_dict

# 查询数据
book = session.query(Book).first()
print(book.to_dict())
books = session.query(Book).all()
session.close()
bookdict = [i.to_dict() for i in books]
print(bookdict)

 参考链接:
              #python records数据库连接模块
           #python records数据库连接模块



标签:engine,SQLAlchemy,name,text,persons,session,dict,模块
From: https://blog.51cto.com/xwupiaomiao/12197903

相关文章

  • Jinja2模块生成html
    1、html模板<!DOCTYPEhtml><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"><htmlalign='left'><h1>巡检报告</h1><body><h2>报告综述</h2><p>巡检地点:机房  开始时间:{{s......
  • SQLAlchemy入门:详细介绍SQLAlchemy的安装、配置及基本使用方法
    SQLAlchemy是一个流行的PythonSQL工具包和对象关系映射(ORM)框架,它为开发人员提供了一种高效、灵活的方式来与数据库进行交互。本文将详细介绍SQLAlchemy的安装、配置及基本使用方法,并通过代码示例和案例分析,帮助新手朋友快速上手。一、SQLAlchemy简介SQLAlchemy由MikeBa......
  • python爬虫 - 进阶requests模块
      ......
  • Deformable DETR改进|爆改模型|涨点|在骨干网络和可变形编码器间加入YOLOv10的PSA和SC
    一、文本介绍本文修改的模型是Deformable-DETR,在骨干网络和可变形编码器之间加入YOLOv10的PSA和SCDown模块。其中PSA是YOLOv10提出的一种高效的自注意力模块,为了避免注意力带来的巨额开销,本文将PSA应用于可变形编码器输入的最高层级特征图。SCConv是一种空间和通道解耦的卷积......
  • ansible中为什么不都是用shell模块写task,而是创建出一个一个的模块
    ansible的shell模块的功能非常强大,它甚至可以代替ansible的所有模块,比如像unarchive命令,在shell中可以分解为。通过scp命令传送包到远程,再通过tar命令对文件进行解压,再比如user模块可以直接在shell模块中调用useradd命令和usermod命令进行用户的管理,那么为什么还会有其他模......
  • IIS CORS 模块配置
    一、CORS配置<?xmlversion="1.0"encoding="UTF-8"?><configuration><system.webServer><corsenabled="true"failUnlistedOrigins="true"><addorigin="*"/>......
  • 库卡机器人KR3R540电源模块常见故障维修解决方法
    库卡机器人KR3R540电源模块的常见故障及维修解决方法包括:电源模块无法正常启动:应检查电源模块的电源连接是否正常,以及电源开关是否开启。如果电源连接正常,但驱动器仍然无法启动,可以尝试使用万用表检查驱动器的电源电压是否在正常范围内。如果电源电压过低或过高,都可能导致驱动器......
  • 17级模块化多电平变流器(MMC)研究(Simulink仿真实现)
    ......
  • 基于VITA57.1标准的8路SFP+光纤通道数据传输FMC子卡模块
     板卡概述FMC213是我司自主研制的一块基于FMC标准的8路万兆光纤子卡模块。该板卡符合VITA57.1标准,该板卡可以作为一个理想的IO模块耦合至FPGA前端,8路SFP+的高速串行信号直接连接至FMC(HPC)接口的高速串行总线上,与FPGA内部的万兆位级收发器(MGT)互联,SFP+模块支持业界标准的小型可插......
  • 前端模块化进化史:从全局 function 到 ES Modules
    目前,前端开发已经离不开由CommonJS、ESModules和Webpack构建的模块化开发环境。无论是JavaScript、CSS、图片还是其他资源,都可以作为一个模块来处理。那么,模块化究竟是如何发展到今天的呢?全局函数模式最初的前端模块化尝试是通过全局函数来实现的。例如,在一个util.js文......