在我的函数中,我要求用户输入不同的变量,然后更新数据库。问题是,如果他们不输入任何内容,有没有办法让我不向DB推送任何内容?当他们不为var输入值时,DB中的值将被擦除。
db_root = '/var/lib/mysql/'
db_to_create = 'students'
db_to_use = 'students'
conn = pymysql.connect(host='localhost', user='root', passwd='dbadmin', cursorclass=pymysql.cursors.DictCursor)
print('Connection successful!!')
def modify_student():
student_id = input("Enter the id of the student record you wish to modify: ")
student_info = input("Is this student personal information you want to modify - y or n: ")
if student_info == 'y':
firstname = input("Enter the first name: ")
lastname = input("Enter the last name: ")
email = input("Enter the email address: ")
address = input("Enter the address: ")
DOB = input("Enter the DOB in YYYY-MM-DD: ")
cur = conn.cursor()
command = "use %s; " %db_to_use
cur.execute(command)
sql = "UPDATE students_info SET firstname = %s, lastname = %s, email = %s, address = %s, DOB = %s WHERE ID = %s;"
cur.execute(sql, [firstname, lastname, email, address, DOB, student_id])
print(cur.execute)
conn.commit()
cur.close()
conn.close()
else:
print("else")
modify_student()
######## SCHEMA ##################
MariaDB [students]> DESCRIBE students_info;
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| ID | int(11) | NO | PRI | NULL | auto_increment |
| firstname | varchar(255) | YES | | NULL | |
| lastname | varchar(255) | YES | | NULL | |
| email | varchar(255) | YES | | NULL | |
| address | varchar(255) | YES | | NULL | |
| DOB | date | YES | | NULL | |
| english | varchar(255) | YES | | NULL | |
| maths | varchar(255) | YES | | NULL | |
| history | varchar(255) | YES | | NULL | |
| science | varchar(255) | YES | | NULL | |
+-----------+--------------+------+-----+---------+----------------+
您可以使用以下辅助函数:
def mandatory_input(prompt):
while True:
value = input(prompt)
if value:
return value
print("You did not enter the required information.")
并用它替换所有被认为是强制性的input
提示,因此:
student_id = input("Enter the id of the student record you wish to modify: ")
变为:
student_id = mandatory_input("Enter the id of the student record you wish to modify: ")
等等,这样用户将一直被提示输入一个值,直到他们输入一些东西。
此外,如果您想等待用户完成,然后在他们最后输入时进行验证:
if all([firstname, lastname, email, ...]):
cur = conn.cursor()
...
else:
print('User missed an input')