开始前提:安装了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库中创建数据库,表,插入,更新,删除,查询基本用法的文章。
谢谢大家