使用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()

 结果如下:

  # 向表中添加多条数据(如需添加多条数据、只需使用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()

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容