SQLAlchemy查询/修改/删除

源代码

#需要确保mariadb服务已开启,且dbconn与该文件在同一目录下


from dbconn import Session,Departments,Salary

#建立到数据库的会话链接

session=Session() #创建会话类实例

#查询时,直接查询类,返回的是类的所有实例

qset1=session.query(Departments)

#qset1只是查询语句,取值时,才会真正连接数据库

print(qset1)

#通过会话操作数据库

#从qset1中取值,方法一,使用all方法

result1=qset1.all()

print(result1)

#从qset1取值,方法二,直接遍历

for dep in qset1:

    print(dep.dep_id,dep.dep_name)

#查询时,查询的是类属性,返回的是元组

qset2=session.query(Employees.name,Employees.email)

for data in qset2:

    print(data)

for name,email in qset2:

    print(name,email)

#查询完排序

qset3=session.query(Departments).order_by(Departments.dep_id,Departments.dep_name)

for dep in qset3:

    print(dep.dep_id,dep.dep_name)

print('*'*50)

#切片

qset4=session.query(Departments).order_by(Departments.dep_id)[1:3]

for dep in qset4:

    print(dep.dep_id,dep.dep_name)

print('*'*50)

#过滤

qset5=session.query(Departments).filter(Departments.dep_id<3)

for dep in qset5:

    print(dep.dep_id,dep.dep_name)

print('*'*50)

#过滤,in/not in操作符

#查询包含

qset6=session.query(Departments).filter(

Departments.dep_id.in_([3,5]))

for depin qset6:

print(dep.dep_id,dep.dep_name)

print('*'*50)

#查询不包含

qset7=session.query(Departments).filter(

~Departments.dep_id.in_([3,5])

)

for depin qset7:

print(dep.dep_id,dep.dep_name)

print('*'*50)

#字段为空null `不为空

#字段为空

qset8=session.query(Departments).filter(Departments.dep_id.is_(None))

for dep in qset8:

    print(dep.dep_id,dep.dep_name)

print('*'*50)

#字段不为空

qset9=session.query(Departments).filter(Departments.dep_id.isnot(None))

for dep in qset9:

    print(dep.dep_id,dep.dep_name)

print('*'*50)

#在查询结果中取值,all返回所有列表

qset10=session.query(Employees.name,Employees.email)

print(qset10.all())

print('*'*50)

#在查询结果中屈指,first返回第一项的值

qset11=session.query(Employees.name,Employees.email)

print(qset11.first())

print('*'*50)

#多表查询.query中先写Employees,join就要填Departments

#query中先写Department,join就要填Employees

qset12=session.query(Employees.name,Departments.dep_name).join(Departments)

print(qset12.all())

#修改,就是重新赋值

qset13=session.query(Departments).filter(Departments.dep_name=='人事部')

hr=qset13.first()

hr.dep_name='人力资源部'

#删除

qset14=session.query(Departments).filter(Departments.dep_id==6)

sales=qset14.first()

session.delete(sales)

#将数据提交到实例对应数据库

session.commit()

#关闭session类

session.close()


结果测试

1 人事部

5 市场部

3 开发部

4 测试部

2 运维部

6 销售部


('王俊', '[email protected]')

('吴伟超', '[email protected]')

('董枝俊', '[email protected]')

('李通达', '[email protected]')

('王秀燕', '[email protected]')

('高琦', '[email protected]')

('王召飞', '[email protected]')

('孙燕', '[email protected]')

('高鹏飞', '[email protected]')

王俊 [email protected]

吴伟超 [email protected]

董枝俊 [email protected]

李通达 [email protected]

王秀燕 [email protected]

高琦 [email protected]

王召飞 [email protected]

孙燕 [email protected]

高鹏飞 [email protected]


查询完排序:

1 人事部

2 运维部

3 开发部

4 测试部

5 市场部

6 销售部

**************************************************


切片:

2 运维部

3 开发部

**************************************************


过滤:

1 人事部

2 运维部

**************************************************


包含:

5 市场部

3 开发部

**************************************************


不包含:

1 人事部

4 测试部

2 运维部

6 销售部

**************************************************


字段为空查询不到:

**************************************************


字段不为空:

1 人事部

5 市场部

3 开发部

4 测试部

2 运维部

6 销售部

**************************************************


#列表形式返回所有:

[('王俊', '[email protected]'), ('吴伟超', '[email protected]'), ('董枝俊', '[email protected]'), ('李通达', '[email protected]'), ('王秀燕', '[email protected]'), ('高琦', '[email protected]'), ('王召飞', '[email protected]'), ('孙燕', '[email protected]'), ('高鹏飞', '[email protected]')]

**************************************************


返回第一项:

('王俊', '[email protected]')

**************************************************


多表查询:

[('王俊', '开发部'), ('吴伟超', '开发部'), ('董枝俊', '开发部'), ('李通达', '运维部'), ('王秀燕', '运维部'), ('高琦', '人事部'), ('王召飞', '人事部'), ('孙燕', '测试部'), ('高鹏飞', '运维部')]

**************************************************


更新数据:

MariaDB [newcompany]> select * from departments;

+--------+-----------------+

| dep_id | dep_name        |

+--------+-----------------+

|      1 | 人力资源部      |

|      5 | 市场部          |

|      3 | 开发部          |

|      4 | 测试部          |

|      2 | 运维部          |

|      6 | 销售部          |

+--------+-----------------+

可以看到人事部更换为人力资源部


删除:

MariaDB [newcompany]> select * from departments;

+--------+-----------------+

| dep_id | dep_name        |

+--------+-----------------+

|      1 | 人力资源部      |

|      5 | 市场部          |

|      3 | 开发部          |

|      4 | 测试部          |

|      2 | 运维部          |

+--------+-----------------+


你可能感兴趣的:(SQLAlchemy查询/修改/删除)