wxh_39.sql
    student表属性.png

    1. # @Time : 2022/9/2 9:22
    2. # @Author : Andrew
    3. import time
    4. import datetime
    5. import pymysql
    6. ### 学生信息的增删改查
    7. # 数据库的读写操作
    8. def open_DB(host, user, password, port, db):
    9. db_object = pymysql.Connect(host=host, user=user, password=password, port=port, db=db, charset='utf8')
    10. sheet_object = db_object.cursor()
    11. return db_object, sheet_object
    12. def read_DB(sheet_object, sql):
    13. sheet_object.execute(sql)
    14. result = sheet_object.fetchall()
    15. return result
    16. def write_DB(db_object, sheet_object, sql):
    17. try:
    18. sheet_object.execute(sql)
    19. db_object.commit()
    20. except:
    21. db_object.rollback()
    22. def close_DB(db_object, sheet_object):
    23. db_object.close()
    24. sheet_object.close()
    25. # 前段交互操作 函数
    26. # 得到需要搜索的学生信息
    27. def getStuSearchInfo():
    28. while True:
    29. name, sex, cid, race = input("请输入学生信息(以','隔开):\nname sex cid race\n").split(',')
    30. if sex not in ('男', '女'):
    31. print('输入用户性别非法,请重新输入!')
    32. else:
    33. return name, sex, cid, race
    34. # 得到需要添加的学生的信息
    35. def getStuAddInfo():
    36. while True:
    37. Sname, birth, firstDay, race, sex, height, CID, hobbies, remarks = input("请输入学生信息(以','隔开)\n"
    38. "Sname,birth,firstDay,race,sex,height,CID,hobbies,remarks:\n").split(
    39. ',')
    40. if Sname == '':
    41. print('学生姓名不能为空,请重新输入!')
    42. elif birth == '':
    43. print('学生生日不能为空,请重新输入!')
    44. try:
    45. timeArray = time.strptime(birth, "%Y-%m-%d")
    46. except:
    47. print('请输入正确的出生日期')
    48. elif firstDay == '':
    49. print('入学时间不能为空,请重新输入!')
    50. try:
    51. timeArray = time.strptime(firstDay, "%Y-%m-%d")
    52. except:
    53. print('请输入正确的入学时间')
    54. elif sex == '':
    55. print('学生性别不能为空,请重新输入!')
    56. elif sex not in ('男', '女'):
    57. print('输入用户性别非法,请重新输入!')
    58. elif CID == '':
    59. print('班级编号不能为空,请重新输入!')
    60. elif int(CID) not in (31, 33, 35, 37, 38, 39, 41):
    61. print('请输入正确的班级')
    62. else:
    63. return Sname, birth, firstDay, race, sex, height, CID, hobbies, remarks
    64. # 得到需要修改的学生信息
    65. def getStuUpdataInfo():
    66. while True:
    67. name = input('请输入学生姓名:')
    68. result, stu_info = searchStu(name, sex='', cid='', race='')
    69. # print(stu_info,type(stu_info))
    70. if result == 0:
    71. sid = stu_info[0][0]
    72. # stu_info1.extend(stu_info[0])
    73. Sname, birth, firstDay, race, sex, height, CID, hobbies, remarks = input("请输入学生信息(以','隔开)\n"
    74. "Sname,birth,firstDay,race,sex,height,CID,hobbies,remarks:\n").split(
    75. ',')
    76. if Sname == '':
    77. print('学生姓名不能为空,请重新输入!')
    78. elif birth == '':
    79. print('学生生日不能为空,请重新输入!')
    80. try:
    81. timeArray = time.strptime(birth, "%Y-%m-%d")
    82. except:
    83. print('请输入正确的出生日期')
    84. elif firstDay == '':
    85. print('入学时间不能为空,请重新输入!')
    86. try:
    87. timeArray = time.strptime(firstDay, "%Y-%m-%d")
    88. except:
    89. print('请输入正确的入学时间')
    90. elif sex == '':
    91. print('学生性别不能为空,请重新输入!')
    92. elif sex not in ('男', '女'):
    93. print('输入用户性别非法,请重新输入!')
    94. elif CID == '':
    95. print('班级编号不能为空,请重新输入!')
    96. elif int(CID) not in (31, 33, 35, 37, 38, 39, 41):
    97. print('请输入正确的班级')
    98. else:
    99. if height == '':
    100. height = 0
    101. return name, Sname, birth, firstDay, sex, CID, race, height, hobbies, remarks
    102. def stuDelectInfo():
    103. while True:
    104. stu_name = input('请输入需要删除的学生姓名:')
    105. result1, stu_info2 = searchStu(stu_name, sex='', cid='', race='')
    106. if result1 == -1:
    107. print('没有该同学')
    108. else:
    109. # print(stu_info2)
    110. # choice3 = input('请输入需要删除的学生学号:')
    111. result3 = delectstu(stu_name)
    112. if result3 == -1:
    113. print('删除失败')
    114. else:
    115. print('删除成功')
    116. # 后端操作
    117. # 查询学生信息并返回result结果 0.-1
    118. def searchStu(name, sex, cid, race):
    119. sql = "select * from student where "
    120. if name == '':
    121. sql = sql + 'Sname = Sname '
    122. else:
    123. sql = sql + f'Sname = \'{name}\' '
    124. if sex == '':
    125. sql = sql + 'and sex = sex '
    126. else:
    127. sql = sql + f'and sex = \'{sex}\' '
    128. if cid == '':
    129. sql = sql + 'and CID = CID '
    130. else:
    131. sql = sql + f'and CID = \'{cid}\' '
    132. if race == '':
    133. sql = sql + 'and race = race '
    134. else:
    135. sql = sql + f'and race = \'{race}\' '
    136. info1 = read_DB(sheet_object, sql)
    137. if len(info1) == 0:
    138. result = -1
    139. else:
    140. result = 0
    141. return result, info1
    142. # 添加学生的信息到数据库
    143. def addStu(name, birth, firstDay, race, sex, height, cid, hobbies, remarks):
    144. if height == '':
    145. height = 0
    146. sql = "insert into student(Sname,birth,firstDay,race,sex,height,CID,hobbies,remarks) values" \
    147. f"(\'{name}\',\'{birth}\',\'{firstDay}\',\'{race}\',\'{sex}\',\'{height}\',\'{cid}\',\'{hobbies}\',\'{remarks}\')"
    148. write_DB(db_object, sheet_object, sql)
    149. result = searchStu(name, sex, cid, race)
    150. return result
    151. def updateStu(name, Sname, birth, firstDay, sex, CID, race, height, hobbies, remarks):
    152. sql = "update student set "
    153. if Sname == '':
    154. sql = sql + "sname = sname"
    155. else:
    156. sql = sql + f"sname = '{Sname}'"
    157. if birth == '':
    158. sql = sql + ", birth = birth"
    159. else:
    160. sql = sql + f", birth ='{birth}'"
    161. if firstDay == '':
    162. sql = sql + ", firstDay = firstDay"
    163. else:
    164. sql = sql + f", firstDay ='{firstDay}'"
    165. if sex == '':
    166. sql = sql + ", sex = sex"
    167. else:
    168. sql = sql + f", sex ='{sex}'"
    169. if CID == '':
    170. sql = sql + ", cid = cid"
    171. else:
    172. sql = sql + f", cid ={CID}"
    173. if race == '':
    174. sql = sql + ", race = race"
    175. else:
    176. sql = sql + f", race ='{race}'"
    177. if height == '':
    178. sql = sql + ", height = height"
    179. else:
    180. sql = sql + f", height ={height}"
    181. if hobbies == '':
    182. sql = sql + ", hobbies = hobbies "
    183. else:
    184. sql = sql + f", hobbies ='{hobbies}'"
    185. if remarks == '':
    186. sql = sql + f", remarks = remarks where Sname = '{name}'"
    187. else:
    188. sql = sql + f", remarks = {remarks} where Sname = '{name}'"
    189. write_DB(db_object, sheet_object, sql)
    190. result, stu_info = searchStu(Sname, sex, CID, race)
    191. return result
    192. def delectstu(num):
    193. sql = "delete from student where " + f"Sname = '{num}'"
    194. print(sql)
    195. result3 = write_DB(db_object, sheet_object, sql)
    196. return result3
    197. db_object, sheet_object = open_DB('localhost', 'root', '514623', 3307, 'practice')
    198. # choice = input('1.add\n2.search\n3.updata\n4.delete\n请输入您的选择:')
    199. while True:
    200. choice = input('1.add\n2.search\n3.updata\n4.delete\n请输入您的选择:')
    201. ## 增加学生信息
    202. if choice == '1':
    203. add_stu_info = getStuAddInfo()
    204. result = addStu(*add_stu_info)
    205. if result == -1:
    206. print('添加失败!')
    207. else:
    208. print('新增成功!')
    209. # 查询功能
    210. elif choice == '2':
    211. search_info = getStuSearchInfo()
    212. result, stu_info = searchStu(*search_info)
    213. if result == -1:
    214. print('没有该同学')
    215. else:
    216. print(stu_info)
    217. elif choice == '3':
    218. name, Sname, birth, firstDay, race, sex, height, CID, hobbies, remarks = getStuUpdataInfo()
    219. result1, check_info = updateStu(name, Sname, birth, firstDay, race, sex, height, CID, hobbies, remarks)
    220. if result1 == -1:
    221. print('修改失败!')
    222. else:
    223. print('修改成功!')
    224. elif choice == '4':
    225. stuDelectInfo()
    226. elif choice == 'q':
    227. break
    228. else:
    229. print('请输入正确的选项!')
    230. close_DB(db_object, sheet_object)
    231. # '1.[name] 2.[birth] 3.[firstDay] 4.[race] 5.[sex] 6.[height] 7.[CID] 8 [hobbies] 9[remarks]

    /