日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

sqlalchemy1.4风格2.0

發布時間:2025/5/22 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sqlalchemy1.4风格2.0 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 基本配置

官方文檔:
https://docs.sqlalchemy.org/en/14/orm/session_basics.html#session-querying-20

1.1 Model

from sqlalchemy import INTEGER, Column, ForeignKey, String from sqlalchemy.orm import declarative_base, relationshipBase = declarative_base()class Users(Base):__tablename__ = "users"uid = Column(INTEGER, primary_key=True)name = Column(String(30))age = Column(INTEGER)class Article(Base):__tablename__ = "article"a_id = Column(INTEGER, primary_key=True)uid = Column(INTEGER)a_title = Column(String(30))a_readcount = Column(INTEGER)

1.2 映射

from sqlalchemy import create_engine from sqlalchemy.orm import sessionmakerfrom model import Base# 建立與MySQL的連接 db_name = "sanic_test" host = "127.0.0.1" db_user = "root" password = "root"engine = create_engine(f'mysql+pymysql://{db_user}:{password}@{host}/{db_name}', echo=True)# 創建session對象 session = sessionmaker(engine)()# 創建表,執行所有BaseModel類的子類 Base.metadata.create_all(engine)# 提交,必須 session.commit()

1.3 main

from sqlalchemy import create_engine, select from sqlalchemy.orm import Sessionfrom model import Users, Articleengine = create_engine('mysql://root:root@127.0.0.1/sanic_test?charset=utf8') session = Session(engine, future=True)

2 數據庫

mysql> select * from users; +-----+--------------+-----+ | uid | name | age | +-----+--------------+-----+ | 1 | 有勇氣的牛排 | 20 | | 2 | 灰太狼 | 20 | +-----+--------------+-----+ mysql> select * from article; +------+-----+---------+-------------+ | a_id | uid | a_title | a_readcount | +------+-----+---------+-------------+ | 1 | 1 | python | 10 | | 2 | 1 | java | 30 | | 3 | 2 | vue | 15 | +------+-----+---------+-------------+

3 異常處理

with Session(engine) as session:session.begin()try:session.add(some_object)session.add(some_other_object)except:session.rollback()raiseelse:session.commit()

結合寫法

with Session(engine) as session, session.begin():session.add(some_object)session.add(some_other_object)

4 使用 sessionmaker

from sqlalchemy.orm import sessionmaker engine = create_engine('postgresql://scott:tiger@localhost/') # a sessionmaker(), also in the same scope as the engine Session = sessionmaker(engine)

3 增加數據

沒有的列,自動為空

user1 = Users(name="戰神") user2 = Users(name="戰神2", age=18) session.add(user1) session.add(user2)session.commit()

要一次將項目列表添加到會話中,可以使用 Session.add_all()

session.add_all([user1, user2])

4 刪除

5 更新

stmt = update(Users).where(Users.uid == 7).values(name="大哥").\execution_options(synchronize_session="fetch")result = session.execute(stmt)

execution_options():可用于建立執行時間選項

5 查詢

5.1 查詢單表 多個記錄

statement = select(Users).filter_by(age=20) result = session.execute(statement).scalars().all()print(result) for i in result:print(i)print(i.id)print(i.name)print(i.age)

5.2 查詢多表 多個記錄

statement = select(Users, Article).where(Users.uid == Article.uid) result = session.execute(statement).all()print(result) for users, article in result:print(users.uid, article.a_title)

5.3 指定列

statement = select(Users.uid, Users.name, Article).where(Users.uid == Article.uid) result = session.execute(statement).all()print(result) for uid, name, article in result:print(uid, name, article.a_title)

總結

以上是生活随笔為你收集整理的sqlalchemy1.4风格2.0的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。