📅  最后修改于: 2023-12-03 15:38:53.046000             🧑  作者: Mango
在进行数据库操作时,我们有时需要根据多个条件从数据库中获取特定的数据行。这时,我们可以编写一个函数来实现这个过程。
def get_rows_by_columns(table_name: str, columns: list, conditions: dict):
"""
从指定的数据库表中,按照指定的列和条件获取相应的数据行
:param table_name: 数据库表名
:param columns: 需要获取的列名
:param conditions: 获取数据行的条件,为字典类型,格式为{列名: 值}
:return: 返回符合条件的数据行
"""
该函数的设计思路为:
import pymysql
def get_rows_by_columns(table_name: str, columns: list, conditions: dict):
# 连接数据库
conn = pymysql.connect(host='localhost', user='root', password='password', db='test', charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
# 构造SQL语句
columns_str = ', '.join(columns)
conditions_str = ' AND '.join([f"{k}='{v}'" for k, v in conditions.items()])
sql = f"SELECT {columns_str} FROM {table_name} WHERE {conditions_str}"
# 执行SQL语句获取数据行
try:
with conn.cursor() as cursor:
cursor.execute(sql)
result = cursor.fetchall()
return result
finally:
# 关闭数据库连接
conn.close()
使用该函数时,我们可以根据具体情况调用函数并传入相应的参数即可。以下是一个示例:
table_name = "students"
columns = ["name", "age", "sex", "score"]
conditions = {"sex": "male", "score": ">=90"}
result = get_rows_by_columns(table_name, columns, conditions)
print(result)
这段示例代码会从名为"students"的表中获取性别为男且分数大于等于90的学生的姓名、年龄、性别和分数信息。获取到的信息将以字典列表的形式返回,并通过print函数输出。