美文网首页
使用sqlalchemy对数据库表进行增删查改操作

使用sqlalchemy对数据库表进行增删查改操作

作者: python开发者 | 来源:发表于2018-06-29 10:55 被阅读0次

    上一节为大家讲解了“定义ORM模型,并将ORM模型映射到数据库中”,将ORM模型映射到数据库后,我们就可以对数据库表进行增删查改操作了。

    from sqlalchemy import create_engine,Column,Integer,String

    from sqlalchemy.ext.declarative import declarative_base

    from sqlalchemy.orm import sessionmaker

    DIALCT = "mysql"

    DRIVER = "pymysql"

    USERNAME = "root"

    PASSWORD = "root"

    HOST = "127.0.0.1"

    PORT = "3306"

    DATABASE = "test"

    DB_URI={}+{}://{}:{}@{}:{}/{}?charset=utf8.format(DIALCT,DRIVER,USERNAME,PASSWORD,HOST,PORT,DATABASE)

    engine = create_engine(DB_URI)

    Base = declarative_base(engine)

    # 创建session 会话对象

    session = sessionmaker(engine)()

    class Person(Base):

      __tablename__ = "person"

      id = Column(Integer , primary_key=True , autoincrement=True)

      name = Column(String(10) , nullable=False)

    age = Column(Integer, nullable=False)

    #定义__repr__方法:将对象的属性方法打印成一个可读字符串

      def __repr__(self):

            return "id:%s,name:%s,age:%s"%(self.id,self.name,self.age)

    # Base.metadata.drop_all()

    # Base.metadata.create_all()

    # 添加数据

    def add_data():

      # 向表中添加一条数据

      person = Person(name = "jack" , age = 20)

    session.add(person)

    #  添加数据后、数据保存到电脑内存上,并没有添加到数据库中,需使用 session.commit() 方法将数据提交到数据库中。

    session.commit()

     结果如下:

      # 向表中添加多条数据(如需添加多条数据、只需使用add_all方法将多条数据添加到一个列表即可)

      person1 = Person(name = "blue" , age = 30)

      person2 = Person(name = "tom" , age = 23)

      session.add_all([person1,person2])

    session.commit()

    结果如下:

    #查询数据

    def select_data():

      # 查询表中所有数据

      results = session.query(Person).all()

      for r in results:

          print(r)

      结果如下:

      # 查询表中第一条数据

      first = session.query(Person).first()

    print(first)

      结果如下:

    # 查询表中name为tom的第一条数据

      result = session.query(Person).filter_by(name = "tom").first()

    print(result)

    结果如下:

      # 查询表中年龄大于20的数据(结果为list,故用for循环遍历)

      results = session.query(Person).filter(Person.age > 20).all()

      for r in results:

    print(r)

    结果如下:

    # filter: 多用于简单查询,filter_by:用于复杂查询,使用filter_by作为查询过滤条件时,需在前面添加对象名,如Person.age

    #修改数据

    def update_date():

      # 查询表中第一条数据,将其姓名修改为 tlj

      result = session.query(Person).first()

    result.name = "tlj"

    session.commit()

    print(result)

    结果如下:

    #删除数据

    def del_data():

      result = session.query(Person).first()

      session.delete(result)

      session.commit()

    结果如下:

    #如果程序作为主文件运行,将执行下面函数

    if __name__ == "__main__":

    #执行增删查改操作、填写相对应函数即可(以添加数据为例)

      add_data()

    相关文章

      网友评论

          本文标题:使用sqlalchemy对数据库表进行增删查改操作

          本文链接:https://www.haomeiwen.com/subject/tvnoyftx.html