码迷,mamicode.com
首页 > 数据库 > 详细

【SQLAlchemy】01-初识SQLAlchemy

时间:2020-06-18 15:49:30      阅读:49      评论:0      收藏:0      [点我收藏+]

标签:会话   fir   对象关系映射   基类   关系   column   use   属性   数据   

好风凭借力,送我上青云。

介绍

SQLAlchemy对象关系映射器提供了一种将用户定义的Python类与数据库表以及这些类(对象)的实例与相应表中的行关联起来的方法

1. 安装

pip install sqlalchemy -i https://pypi.doubanio.com/simple

2. 连接

from sqlalchemy import create_engine

# 数据库基本信息
HOSTNAME = ‘127.0.0.1‘
PORT = ‘3306‘
DATABASE = ‘flask‘
USERNAME = ‘root‘
PASSWORD = ‘root‘
DB_URI = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8"

#  连接数据库,echo:表示日志
engine = create_engine(DB_URI, echo=False)

# 判断是否连接成功
conn = engine.connect()
print(conn.execute("select 1").fetchone())

3. 映射

在这个ORM模型中创建一些属性,来跟表中的字段进行一一映射。这些属性必须是sqlalchemy给我们提供好的数据类型。

#  声明映射,创建一个ORM基类。
Base = declarative_base(engine)

#  映射类
class User(Base):
    # 指定这个模型映射到数据库中的表名
    __tablename__ = ‘user‘

    # primary_key:主键
    # autoincrement:自增长
    id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String(50))
    fullname = Column(String(length=50))
    nickname = Column(String(length=50))

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

# 来将模型映射到数据库中,相当于执行create table
Base.metadata.create_all()

4. 会话

会话就是在连接到当前数据库,可以对数据库进行CRUD操作

# 创建会话
from sqlalchemy.orm import sessionmaker

Session = sessionmaker(bind=engine)

# 所有和数据库的ORM操作都必须通过一个叫做`session`的会话对象来实现
session = Session()

5. CRUD操作

5.1 增

  • 单个对象添加
# 添加对象
user = User(name=‘ydy‘, fullname=‘ydongy‘, nickname=‘yaodongyang‘)

# 把对象添加到会话中
session.add(user)

# 对session中的对象做commit操作
session.commit()
  • 多个对象一起添加
#  一次添加多条
user1 = User(name=‘zs‘, fullname=‘zhangsan‘, nickname=‘张三‘)
user2 = User(name=‘ls‘, fullname=‘lisi‘, nickname=‘李四‘)

# 刷新到当前事务
session.add_all([user1, user2])
# 提交
session.commit()

5.2 查

  • 查找所有
users = session.query(User).all()
# 返回对象列表
# print(users)
  • filter_by查询
u = session.query(User).filter_by(name=‘ydy‘).all()
print(u)
  • filter查询
u = session.query(User).filter(User.name == ‘ydy‘).all()
print(u)
  • get查询
# 使用get方法查找数据是根据id来查找的
u = session.query(User).get(3)
print(u)
  • first():返回查询集的第一条数据
  • all():返回符合条件的所以查询集

当在查询语句的末尾不添加all()first()的时候,仅仅只是query返回的是需要执行的sql语句

5.3 改

u = session.query(User).first()
u.name = ‘aaa‘

# 提交
session.commit()

# 回滚
session.rollback()

5.4 删

u = session.query(User).first()
session.delete(u)
session.commit()

【SQLAlchemy】01-初识SQLAlchemy

标签:会话   fir   对象关系映射   基类   关系   column   use   属性   数据   

原文地址:https://www.cnblogs.com/ydongy/p/13157879.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!