SQLAlchemy介绍和基本使用




链接数据库


创建表


只能取一行数据



from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String
from sqlalchemy import create_engine
# 链接数据库
# 地址 数据库名字 端口 用户名 密码
# 地址
HOSTNAME = '127.0.0.1'
# 数据库
DATABASE = 'class1'
# 端口
PORT = 3306
# 用户名
USERNAME = 'brkalsy'
# 密码
PASSWORD = 'root123'
# 创建url,传参 用户名 密码 主机地址 端口(默认3306) 数据库名字
DB_URL = 'mysql+pymysql://{}:{}@{}:{}/{}'.format(USERNAME, PASSWORD, HOSTNAME, PORT, DATABASE)
# 访问
engin = create_engine(DB_URL)
# 创建链接
with engin.connect() as conn:
res = conn.execute('select * from class')
print(res.fetchone())
SQLAlchemy-ORM介绍

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
# 链接数据库
# 地址 数据库名字 端口 用户名 密码
# 地址
HOSTNAME = '127.0.0.1'
# 数据库
DATABASE = 'class1'
# 端口
PORT = 3306
# 用户名
USERNAME = 'brkalsy'
# 密码
PASSWORD = 'root23'
# 创建url,传参
DB_URL = 'mysql+pymysql://{}:{}@{}:{}/{}'.format(USERNAME, PASSWORD, HOSTNAME, PORT, DATABASE)
# 访问
engin = create_engine(DB_URL)
# 创建Base基类
Base =declarative_base(engin)
# 创建表(字段)需要导入Colum: from sqlalchemy import Column, Integer, String
顺带公共一直1045错误,查了很久,发现密码少了一位quq这里附赠解决方案:


语法:Base =declative_base(DB_URL的名字),class定义类及tablename创建表和数据,然后Bae.metadata.create_all()

# 定义类相当于定义表格
class Students(Base):
# 给表格取名字 双下划线tablename __tablename__
__tablename__ = 'students'
# 创建字段 数据类型约束 主键 自增长
# 一个表只能有一个逐渐,主键通常是id
# Colum()是指实例化传参
id = Column(Integer, primary_key=True, autoincrement=True)
# nullable是是否为空,这里是string到mysql会自动转换成varchar
name = Column(String(50), nullable=False)
# 性别应该为枚举enum 默认为1,comment为’....‘
gender = Column(Integer, default=1, comment='1为男,2为女')
# 生成表格要映射
# 模型(class的内容就是模型)映射到数据库:Base.matadata.create_all()
Base.metadata.create_all()


增加操作
创建新的表格



但是数据库还没有数据——没有提交事务,需要导入模块——from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.dialects.mysql import LONGTEXT
需要创建一个实例后再对实例实例化
Sesion=sessionmaker(bind=‘绑定数据库的名字’)
session =Session()再实例化一次
session.add()单个数据 session.add_all([])多个数据以add_all列表形式
最后要session.commit()才算提交成功



提交多个数据


记得创建了Base.metadata.create_all()之后要注释,不然会一直重新创建表



增加数据



查——最重要

运行发现是列表,所以for循环遍历

点上字段名才会有结果

太麻烦,可以从class里面定义str方法



使用filter过滤按照条件查询——ssession.query(类名).filter(类名.名==‘’).all()


使用filte_by查询


只查询第一条数据——不需要循环


get()方式查询



改——直接改


删


删除的回滚操作——rollback


String、text、longtext



复习




这篇博客介绍了如何使用Flask与SQLAlchemy进行数据库操作,包括链接MySQL数据库、创建表、增加数据、查询、修改和删除。重点讨论了ORM的使用,如sessionmaker、filter查询,并给出了处理1045错误的解决方案。
738





