首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQLAlchemy学习-1.环境准备与基础使用

SQLAlchemy学习-1.环境准备与基础使用

作者头像
上海-悠悠
发布2022-07-19 12:47:18
7290
发布2022-07-19 12:47:18
举报

前言

SQLAlchemy采用简单的Python语言,提供高效和高性能的数据库访问,实现了完整的企业级持久模型。 它提供了SQL工具包和ORM(对象关系映射)工具,类似于Django 自带的 ORM 框架操作数据库。

环境准备

基于python3.8环境,安装 sqlalchemy 和 pymysql

pip3 install sqlalchemy==1.4.39
pip3 install pymysql==1.0.2

配置连接

连接数据库,需要使用到一些配置信息,组合成满足以下条件的字符串:

dialect+driver://username:password@host:port/database

相关配置参数说明

配置参数

说明

dialect

数据库,如:sqlite、mysql、oracle等

driver

数据库驱动,如前面安装的:pymysql

username

登录数据库用户名

password

登录数据库密码

host

数据库部署 IP 地址

port

端口

database

数据库库名

拼接地址示例

# 拼接配置dialect + driver://username:passwor@host:port/database
DB_URI = 'mysql+pymysql://root:123456@localhost:3306/web'

连接数据库示例

查询 SQL 示例

select * from yoyo_projectinfo WHERE project_name = 'yoyo';

执行结果

先测试下配置的参数是否能连上数据库,写个简单的sql查询

from sqlalchemy import create_engine

# 拼接配置dialect + driver://username:passwor@host:port/database
DB_URI = 'mysql+pymysql://root:123456@localhost:3306/web'

engine = create_engine(DB_URI)  # 创建引擎
conn = engine.connect()  # 创建连接
result = conn.execute('select * from yoyo_projectinfo WHERE project_name = "yoyo";')  # 执行SQL
print(result.fetchone())
conn.close()    # 关闭连接

能看到执行结果,说明数据库连接成功。这是执行的硬核SQL语句,接下来就是讲通过ORM 操作数据库。

创建 ORM 模型

SQLAlchemy 是 Python 著名的 ORM 工具包。通过 ORM,开发者可以用面向对象的方式来操作数据库,不再需要编写 SQL 语句。 在python代码中创建一个类,每个类对应了一个数据库中的一张表,类的数据属性对应了表中的字段名,这个类称为映射类。

创建模型示例

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine, Column, Integer, String

# 拼接配置dialect + driver://username:passwor@host:port/database
DB_URI = 'mysql+pymysql://root:123456@localhost:3306/web'
Base = declarative_base()

class Students(Base):
    __tablename__ = 'students'  # 数据库表名

    id = Column(Integer, primary_key=True)
    name = Column(String(20))
    fullname = Column(String(30))
    nickname = Column(String(30))

    def __repr__(self):
        return "<User(name='%s', fullname='%s', nickname='%s')>" % (
                 self.name, self.fullname, self.nickname)

相关参数说明: __tablename__:数据库表名 Column: 数据表中的一列,内部定义了数据类型 primary_key:主键 String:定义字段是字符串类型,字符串类型需定义字符长度

执行下面这2句,将模型映射到数据库中

if __name__ == '__main__':
    engine = create_engine(DB_URI)
    Base.metadata.create_all(engine)  # 将模型映射到数据库中

执行完成后,在数据库中就可以看到students 表了

新增数据

模型创建完成后,接下来需要往数据库表里面添加数据,需要使用一个引擎的实例来创建一个 Session类的实例。

from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
from xx.xx import Students

engine = create_engine('mysql+pymysql://root:123456@localhost:3306/web')
# 把当前的引擎绑定给这个会话
Session = sessionmaker(bind=engine)
# 实例化
session = Session()

# 创建一个student对象
student_obj = Students(name='yoyo', fullname='yoyoketang', nickname='yy')
session.add(student_obj)  # 添加到session
session.commit()  # 提交到数据库

执行完成后,会看到数据库里面有新增的数据了

批量创建数据使用add_all

session.add_all([
    Students(name='yoyo1', fullname='yoyoketang1', nickname='yy1'),
    Students(name='yoyo2', fullname='yoyoketang2', nickname='yy2')
])
session.commit()

2022年第 11 期《python接口web自动化+测试开发》课程,6月5号开学

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 环境准备
  • 配置连接
  • 连接数据库示例
  • 创建 ORM 模型
  • 新增数据
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档