python中写sql语句添加for循环和变量。(一种SQL引入循环的思想实现)

为了减少代码的冗余,和脚本的运行可以在服务器上自动化,选择在sql语句中加入循环和变量。mysql常见的三种循环方式:while、repeat和loop循环。没有for,但为了方便需要引入for循环,所以选择了用format方法。

import pymysql
import datetime


def Database(host, user, password, database, port, charset):
    '''
    连接数据库
    :param host: ip
    :param user: 用户
    :param password: 密码
    :param database: 数据库名称
    :param port: 端口
    :param charset: 编码格式
    :return: 数据库
    '''
    db = pymysql.connect(host=host,
                         user=user,
                         password=password,
                         database=database,
                         port=port,
                         charset=charset)
    return db


def Students(db, today, getyesterday):
    '''
    查询数据库中,列表中学生今天,昨天的签到的总数,只是随便举例,主要是思想。
    :param db: 数据库
    :param today: 今天时间
    :param getyesterday: 昨天时间 
    :return: 
    '''
    cursor = db.cursor()
    name = ['zhangsan', 'lishi', 'wangwu', 'zhaoliu']
    for i in name:
        sql = "select count(*) from student_data" \
              " where STUDENT_NAME='{}'" \
              " and TODAY = '{}'" \
              "and YESTERDAY='{}';".format(i, str(today), str(getyesterday))    
              # 引入匿名函数,成功引入时间这一变量,和name的for循环。
        cursor.execute(sql)
        db.commit()
        amount = cursor.fetchall()
        sum1 = amount[0][0]    # sql查询后,控制台输出的查询结果,
        print(sum1)
            

def All(db):
    today = datetime.date.today()
    oneday = datetime.timedelta(days=1)
    getyesterday = today - oneday  # 获取昨天的时间,如2021-12-24
    cursor = db.cursor()
    Students(db, today, getyesterday)
    cursor.close()
    db.close()    # 关闭数据库


if __name__ == '__main__':
    db = Database('ip', '用户名', '密码', '数据库', '端口', 'utf8')
    All(db)

你可能感兴趣的:(python自动化,python,笔记,sql,python,数据库)