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

上一节为大家讲解了“定义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()

 结果如下:

使用sqlalchemy对数据库表进行增删查改操作_第1张图片

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

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

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

  session.add_all([person1,person2])

session.commit()

结果如下:

使用sqlalchemy对数据库表进行增删查改操作_第2张图片

#查询数据

def select_data():

  # 查询表中所有数据

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

  for r in results:

      print(r)

  结果如下:

使用sqlalchemy对数据库表进行增删查改操作_第3张图片

  # 查询表中第一条数据

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

print(first)

  结果如下:

使用sqlalchemy对数据库表进行增删查改操作_第4张图片

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

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

print(result)

结果如下:

使用sqlalchemy对数据库表进行增删查改操作_第5张图片


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

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

  for r in results:

print(r)

结果如下:

使用sqlalchemy对数据库表进行增删查改操作_第6张图片

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

#修改数据

def update_date():

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

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

result.name = "tlj"

session.commit()

print(result)

结果如下:

使用sqlalchemy对数据库表进行增删查改操作_第7张图片

#删除数据

def del_data():

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

  session.delete(result)

  session.commit()

结果如下:

使用sqlalchemy对数据库表进行增删查改操作_第8张图片

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

if __name__ == "__main__":

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

  add_data()

你可能感兴趣的:(使用sqlalchemy对数据库表进行增删查改操作)