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