0
点赞
收藏
分享

微信扫一扫

用pymysql制作一个同学录小程序

九月的栩 2022-04-01 阅读 58
pythonmysql

开始前提:安装了MySQL数据库和pymysql库

首先我们要确定我们同学录程序的步骤:先创建一个数据库并在数据库中创建一个表格来存储信息,这一步你可以在数据库可视化工具中完成或者在python中用pymysql都可以。

第二步,写一个函数用来输入我们想要存储信息,

第三步,写一个插入函数用来向数据库插入第二步得到的信息,并且会根据主键是否重复来确定是更新还是插入操作

第四步,写一个查询函数用来查询想要的数据

第五步,创建主函数用来调度各个函数

思路就是这几点然后我们可以开始动手写了

代码如下:

import pymysql

# 连接MySQL
db = pymysql.connect(host='localhost', user='root', password='987654aaa', port=3306, db='spiders')
# 创建可执行游标
cursor = db.cursor()
# 表格对象
table = 'students'

# 我已经创建好了一个spider数据库,在库中创建了一个studens表并设置了id字段为主键
def info():
    """
    输入函数,输入个人信息(学生号,名字,年龄)
    :return: 返回一个字典
    """
    student_id = input('请输入你的学生号: ').strip()
    student_name = input('请输入你的名字: ').strip()
    student_age = int(input('请输入你的年龄 ').strip())
    return {
        'id': student_id,
        'name': student_name,
        'age': student_age
    }


def up_data(data):
    """
    插入函数,如果数据主键重复就执行更新操作
    :param data: 字典
    :return:
    """
    # key就是对应表中的几个字段也就是字典中的几个键
    keys = ', '.join(data.keys())
    # 字典有多长就写几个占位符号%s
    values = ', '.join(['%s'] * len(data))
    # table 是我定义的全局变量,也就是表名,ON DUPLICATE UPDATE是如果主键重复就更新
    sql = 'INSERT INTO {table}({keys}) VALUES ({values}) ON DUPLICATE KEY UPDATE '.format(
        table=table, keys=keys, values=values)
    update = ','.join(["{key} = %s".format(key=key) for key in data])
    sql += update
    try:
        if cursor.execute(sql, tuple(data.values()) * 2):
            print('Successful')
            db.commit()
    except Exception as e:
        print('Failed', e)
        db.rollback()


def select():
    """
    查询函数,根据你输入的name参数在数据库中查询
    :param name: 字符串
    :return:
    """
    name = input('输入你想查看的同学名字: ').strip()
    sql = 'SELECT * FROM {table} WHERE name LIKE "{next_}"'.format(table=table, next_=name)
    try:
        cursor.execute(sql)
        print('Count: ', cursor.rowcount)
        row = cursor.fetchone()
        while row:
            print('Row: ', row)
            row = cursor.fetchone()
    except:
        print('NOT FOUND NAME')


def main():
    """
    主函数调用其他函数
    :return:
    """
    print('欢迎使用同学录小程序:')
    choice = input('请输入你要进行的操作(y创建个人信息,t查看同学信息, q 退出程序):')
    while True:
        if choice == 'y':
            data = info()
            up_data(data)
        elif choice == 't':
            select()
        elif choice == 'q':
            break
        choice = input('请输入你要进行的操作(y创建个人信息,t查看同学信息, q 退出程序):')
    print('感谢使用同学录小程序,祝你生活愉快 ')


if __name__ == '__main__':
    main()
db.close()

欢迎使用同学录小程序:
请输入你要进行的操作(y创建个人信息,t查看同学信息, q 退出程序):t
输入你想查看的同学名字: zz
Count:  1
Row:  ('10086', 'zz', 16)
请输入你要进行的操作(y创建个人信息,t查看同学信息, q 退出程序):q
感谢使用同学录小程序,祝你生活愉快 

 

 以上就是我的思路和代码,如果大家又在更新和查询sql语句这里有问题的话我会在后面在发布几章关于pymysql库中创建数据库,表,插入,更新,删除,查询基本用法的文章。

谢谢大家

举报

相关推荐

0 条评论