創建指定的數據庫表:
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column,Integer,String,create_engine #創建一個orm模型基類
Base=declarative_base() class User(Base): __tablename__="user" id=Column(Integer,primary_key=True,autoincrement=True) name=Column(String(32),index=True) #創建數據庫連接
engine=create_engine("mysql+pymysql://root:1234@127.0.0.1:3306/lgweb?charset=utf8") #調用engine 創建所有繼承base類的數據表類
Base.metadata.create_all(engine)
對數據庫中表數據的添加及批量添加操作:
from creat_table import engine,User from sqlalchemy.orm.session import sessionmaker #創建指定數據庫會話
Session=sessionmaker(engine) #打開會話窗口
db_session=Session() # user_obj=User(name="tom") # user1=User(name="lisa")
#相當於insert into # db_session.add(user_obj) # db_session.add(user1)
db_session.add_all([ User(name="婉君"),User(name="小芬"),User(name="程潔"),User(name="思宇") ]) #提交數據
db_session.commit() db_session.close()
單表查詢:
from creat_table import engine,User from sqlalchemy.orm.session import sessionmaker Session=sessionmaker(engine) db_session=Session() # user_list=db_session.query(User).filter(User.id>=4).all()
user_list=db_session.query(User).filter_by(id>=4).all() for user in user_list: print(user.id,user.name)
更新數據:
from creat_table import engine,User from sqlalchemy.orm.session import sessionmaker Session=sessionmaker(engine) db_session=Session() db_session.query(User).filter_by(name="小芬").update({"name":"曉曉"}) db_session.commit()
刪除數據:
from creat_table import engine,User from sqlalchemy.orm.session import sessionmaker Session=sessionmaker(engine) db_session=Session() ret=db_session.query(User).filter_by(id="2").delete() print(ret) db_session.commit() db_session.close()
************************************************************************************************************************
多表關聯:主外鍵關聯
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.engine import create_engine from sqlalchemy.orm.session import Session from sqlalchemy.orm import relationship from sqlalchemy import Column,Integer,String,ForeignKey #創建一個數據表的繼承基類
Base=declarative_base() #創建一個數據庫連接
engine=create_engine("mysql+pymysql://root:root1234@127.0.0.1:3306/db_unv?charset=utf8") #創建一個會話
db_session=Session(engine) class Student(Base): __tablename__="student" id=Column(Integer,primary_key=True) name=Column(String(32),index=True) school_id=Column(Integer,ForeignKey("school.id")) #外鍵
stu2sch=relationship("School",backref='sch2stu') # school反向解析student關鍵字
class School(Base): __tablename__="school" id = Column(Integer, primary_key=True) name = Column(String(32), index=True) Base.metadata.create_all(engine)
多表的數據添加:
from creat_table import engine,School,Student from sqlalchemy.orm.session import sessionmaker session=sessionmaker(engine) db_session=session() # stu_obj=Student(name="凱文",stu2sch=School(name="麻省理工")) #反向添加數據
sch_obj=School(name="常青藤大學",sch2stu=[Student(name="胡柯"),Student(name="徐素")]) #正向添加
# db_session.add(stu_obj)
db_session.add(sch_obj) db_session.commit() db_session.close()
多表數據的更新和刪除:
from creat_table import School,Student,engine from sqlalchemy.orm.session import sessionmaker Session=sessionmaker(engine) db_session=Session() # stu_obj=db_session.query(Student).filter(Student.name=="徐菲菲").first() # print(stu_obj.school_id) # # db_session.query(Student).filter(Student.id==stu_obj.id).update({"school_id":2})
sch_obj=db_session.query(School).filter(School.name=="麻省理工").first() # ret=db_session.query(Student).filter(Student.school_id==sch_obj.id).update({"school_id":3})
db_session.query(Student).filter(Student.school_id==sch_obj.id).delete() db_session.commit() db_session.close()