python ORM模塊sqlalchemy的使用


1、安裝sqlalchemy

    pip install sqlalchemy

2、導入必要的包及模塊

    import sqlalchemy
    from sqlalchemy.ext.declarative import declarative_base
    from sqlalchemy.orm import sessionmaker

3、創建數據庫連接實例

    #創建數據庫連接實例(#"數據庫類型+數據庫模塊://用戶名:密碼@主機/庫名")
    db=sqlalchemy.create_engine("mysql+pymysql://root:q1q1q1@localhost/a")

4、創建一個元類的繼承類

    base = declarative_base(db)

5、定義一個表(使用類)繼承base

    class Student(base):
        __tablename__ = "student"
        id = sqlalchemy.Column(sqlalchemy.Integer,primary_key=True)
        name = sqlalchemy.Column(sqlalchemy.String(32))
        age = sqlalchemy.Column(sqlalchemy.String(32))

6、創建表

base.metadata返回sqlalchemy.schema.MetaData對象,它是所有Table對象的集合,調用create_all()該對象會觸發CREATE TABLE語句,如果數據庫還不存在這些表的話。

    if __name__ == "__main__":
        base.metadata.create_all(db)

腳本運行前a數據庫中的表:
在這里插入圖片描述
運行上述代碼之后,a數據庫表:
在這里插入圖片描述

7、綁定連接並創建session

    cursor = sessionmaker(bind=db) #得到的時一個類
    
    session = cursor() #實例

8、增(插入數據)

①插入一條數據

    stu = Student(
        id = 1,
        name = "張1",
        age = 18
    )
    session.add(stu)
    session.commit()

在這里插入圖片描述
②同時插入多條數據

    session.add_all([
        Student(id=2,name="張2",age=19),
        Student(id=3,name="張3",age=20)
    ])
    session.commit()

在這里插入圖片描述

9、查詢

①查詢所有數據

    all_data = session.query(Student).all()#得到的是一個可迭代對象
    for data in all_data:
        print("id:%s__name:%s__age:%s"%(data.id,data.name,data.age))

在這里插入圖片描述

②根據條件查詢多條數據

    many_data = session.query(Student).filter_by(age=18)
    print(many_data)#實際是一個sql查詢語句,其還是一個存儲一個對象的帶迭代內容
    for data in many_data:
        print("id:%s__name:%s__age:%s"%(data.id,data.name,data.age))

在這里插入圖片描述
還可以通過序列解包的方式獲取數據

    many_data = session.query(Student).filter_by(age=18)
    data, = many_data
    print("id:%s__name:%s__age:%s"%(data.id,data.name,data.age))

③查詢一條數據

    data = session.query(Student).get(ident=3) #查一條,只能以主鍵查
    print("id:%s__name:%s__age:%s"%(data.id,data.name,data.age))

10、刪除

    #先查詢一條
    data = session.query(Student).get(ident=3)
    #然后刪除
    session.delete(data)
    #然后提交操作
    session.commit()

在這里插入圖片描述

11、修改

   # 先查詢一條
   data = session.query(Student).get(ident=2)
    #然后刪除
   data.name = "老李頭"
    #然后提交操作
   session.commit()

在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM