[SQLAlchemy]新增数据-批量添加推荐bulk_save_objects

import pymysql
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy import Column, String, Integer
from sqlalchemy.orm import Session, DeclarativeBase
from urllib.parse import quote_plus as urlquote

# 使用pymysql作为MySQLdb
pymysql.install_as_MySQLdb()

# 指定连接的MySQL数据库
PASSWORD = 'root@demodemo.com'
DATABASE_URL = f"mysql://root:{urlquote(PASSWORD)}@10.105.212.1:3306/db"

# 创建引擎
engine = create_engine(DATABASE_URL)

# 基于引擎创建session
SessionLocal = sessionmaker(bind=engine)

# 实例化session对象,得到db对象
db: Session = SessionLocal()


#  db使用只有需要关闭,避免占用资源
# db.close()

# 创建对象的基类:
class Base(DeclarativeBase):
    pass


# 定义User对象:
class User(Base):
    __tablename__ = "users"  # 指定数据库中表的名字

    id = Column(Integer, primary_key=True, autoincrement=True)  # 定义id作为主键且自增
    name = Column(String(255))  # 定义name字段,是一个string类型
    password = Column(String(255))  # password,是一个string类型

    # 人性化定制对象的打印输出
    def __str__(self):
        return f"id: {self.id}, name: {self.name}, password: {self.password}"

# 新增数据
# db.add(User(name="liuxu5", password="123456"))
# db.add(User(name="liuxu6", password="123456"))
# db.commit()		# 非常重要

# 批量新增数据,使用 `add_all()`

# user7 = User(name="liuxu7", password="123456")
# user8 = User(name="liuxu8", password="123456")
# db.add_all([user7, user8])
# db.commit()

# 批量新增数据,使用 `bulk_save_objects()` 推荐效率高

user9 = User(name="liuxu9", password="123456")
user10 = User(name="liuxu10", password="123456")
db.bulk_save_objects([user9, user10])
db.commit()

# 关闭db连接(重要)
db.close()
posted @ 2023-03-28 09:51  LeoShi2020  阅读(159)  评论(0编辑  收藏  举报