Flask-sqlalchemy

   

sqlalchemy

  1. 安装  
  2. pip install sqlalchemy -i https://pypi.douban.com/simple  
  3. 连接的时候依赖pymysql  

   

创建表

  1. # -*- coding: utf-8 -*-  
  2. from sqlalchemy.ext.declarative import declarative_base  
  3. from sqlalchemy import Column #   
  4. from sqlalchemy import Integer, String  # 属性  
  5.       
  6. Base = declarative_base()  # django models  
  7.       
  8. 创建表  
  9. class User(Base):  
  10.     __tablename__ = 'user'  
  11.     id = Column(Integer, primary_key=Trueautoincrement=True)  
  12.     name = Column(String(32), index=Truename='名字')  
  13.       
  14.       
  15. 数据库连接  
  16. from sqlalchemy import create_engine  
  17. engine = create_engine("mysql+pymysql://root:[email protected]:3306/my_sql?charset=utf8")  
  18.       
  19. engine数据库中创建所有继承Base的表  
  20. Base.metadata.create_all(engine)  

   

增加数据

  1. # -*- coding: utf-8 -*-  
  2. from .create import engine, User  
  3. 增加数据  
  4. 创建会话窗口  
  5. from sqlalchemy.orm import sessionmaker  
  6. Session = sessionmaker(engine)  
  7. 打开会话窗口  
  8. db_session = Session()  
  9.       
  10. # ---单条数据  
  11. user_obj = User(name='Ywb')  # 实例化  
  12. db_session.add(user_obj) # 相当于 insert into  
  13.       
  14. 执行会化窗口中的所有操作  
  15. db_session.commit()  
  16. db_session.close()  
  17.       
  18. # ---增加批量数据  
  19. db_session.add_all([  
  20.     User(name='peach'),  
  21.     User(name='小红')  
  22. ])  
  23.       
  24. db_session.commit()  
  25. db_session.close()  
  26.       
  27. # ---扩展  
  28. user1 = User(name='11')  
  29. user2 = User(name='12')  
  30. user3 = User(name='13')  
  31. user4 = User(name='14')  
  32. db_session.add(user1)  
  33. db_session.add(user2)  
  34. db_session.add(user3)  
  35. db_session.add(user4)  
  36. db_session.commit()  # 全部添加进去  
  37. db_session.close()  

   

单表查询

  1. # -*- coding: utf-8 -*-  
  2. 单表查询  
  3. from sqlalchemy.orm import sessionmaker  
  4. from SQLAlchemy.create import engine, User  
  5. Session = sessionmaker(engine)  
  6. db_session = Session()  
  7.       
  8. # ---基本查询  
  9. # select * from name  
  10. user_list = db_session.query(User)  
  11. print(user_list)  # SELECT user.`名字` AS `user_名字`, user.id AS user_id FROM user  
  12.       
  13. # ---------------- 所有数据 ------------------  
  14. user_list = db_session.query(User).all() # [obj, obj]  
  15. for usr in user_list:  
  16.     print(usr.name)  
  17.       
  18. # ---------------- 一条数据 ------------------  
  19. user = db_session.query(User).first() # obj  
  20. print(user.name)  
  21.       
  22.       
  23. # ---------------- 带条件查询 ------------------  
  24. # --- filter  
  25. user_list = db_session.query(User).filter(User.id==2).all()  # [obj, obj]  
  26. print(user_list)  
  27.       
  28. user_list = db_session.query(User).filter(User.id >= 1).all() # [obj, obj]  
  29. for user in user_list:  
  30.     print(user.id) # 按照id排序,因为添加是id  
  31.       
  32. # --- filter_by  
  33. user = db_session.query(User).filter_by(id=2).first()  # obj  
  34. print(user)  
  35.       
  36. # --- 扩展-查看sql语句  
  37. sql = db_session.query(User).filter(User.id >= 1)  
  38. print(sql)  
  39. """  
  40. SELECT user.`名字` AS `user_名字`, user.id AS user_id   
  41. FROM user   
  42. WHERE user.id >= %(id_1)s  
  43. """  

 

修改

  1. # -*- coding: utf-8 -*-  
  2. 更新修改数据  
  3. from sqlalchemy.orm import sessionmaker  
  4. from SQLAlchemy.create import engine,User  
  5. Session = sessionmaker(engine)  
  6. db_session = Session()  
  7.     
  8. 单条修改  
  9. # update `uesr` set `name` = 'haha' where id =1  
  10. res = db_session.query(User).filter(User.id==1).update({  
  11.     "name": 'haha'  
  12. })  
  13.     
  14. print(res)  # 返回影响的行数  
  15. db_session.commit()  
  16. db_session.close()  
  17.     
  18. 批量修改  
  19. res = db_session.query(User).filter(User.id > 1).update({  
  20.     "name": "1234"  
  21. })  
  22.     
  23. print(res)  
  24. db_session.commit()  
  25. db_session.close()  

 

删除

  1. # -*- coding: utf-8 -*-  
  2. 删除数据  
  3. from sqlalchemy.orm import sessionmaker  
  4. from SQLAlchemy.create import engine,User  
  5. Session = sessionmaker(engine)  
  6. db_session = Session()  
  7.     
  8. 删除单条  
  9. # delete from user where id = 1  
  10. res = db_session.query(User).filter(User.id==1).delete()  
  11. print(res)  # 返回影响的行数  
  12. db_session.commit()  
  13. db_session.close()  
  14.     
  15.     
  16. 删除多条  
  17. res = db_session.query(User).filter(User.name=="12345").delete()  
  18. print(res)  
  19. db_session.commit()  
  20. db_session.close()  

 

ForeignKey 创建表

 

  1. # -*- coding: utf-8 -*-  
  2. from sqlalchemy.ext.declarative import declarative_base  
  3. from sqlalchemy import Column #   
  4. from sqlalchemy import Integer, String, ForeignKey  # 属性  
  5. from sqlalchemy import create_engine  
  6. from sqlalchemy.orm import relationship #  
  7.     
  8. Base = declarative_base()  # django models  
  9.     
  10. class Student(Base):  
  11.     __tablename__ = 'student'  
  12.     id = Column(Integer, primary_key=True)  
  13.     name = Column(String(32))  
  14.     school_id = Column(Integer,ForeignKey("school.id"))  # 外键关系 Fk  
  15.     
  16.     # 反向光系(如果我想从Student看到School的信息,直接下下面方法)Student.stu2sch  
  17.     #如果School想拿Student的信息 那就只要School.backref里面的值, School.stu_sch  
  18.     stu2sch = relationship("School", backref="stu_sch")  
  19.     
  20. class School(Base):  
  21.     __tablename__ = 'school'  
  22.     id = Column(Integer, primary_key=True)  
  23.     name = Column(String(32))  
  24.     
  25.     
  26.     
  27. engine = create_engine("mysql+pymysql://root:[email protected]:3306/my_sql?charset=utf8")  
  28.     
  29. engine数据库中创建所有继承Base的表  
  30. Base.metadata.create_all(engine)  

你可能感兴趣的:(Flask-sqlalchemy)