【发布时间】:2018-04-28 17:11:02
【问题描述】:
我正在尝试在 MySql db 中保存随机生成的代码,但它只保存第一个字符,我尝试了不同的方法,但都没有奏效。这是我的代码:
try:
error = None
with mysql.connection.cursor() as cursor:
passwordd = ''
if request.method == 'GET' or 'POST':
for n in range(0, 8):
x = random.randint(0, 9)
if x <= 3:
passwordd += str(random.choice('abcdefghijklmnopqrstuvxyz'))
elif x <= 6:
passwordd += str(random.choice('abcffsddddd'))
else:
passwordd += str(random.randrange(0, 9))
return passwordd
sql = "INSERT INTO generatedcode(password) VALUES (%s)"
cursor.execute(sql, (passwordd))
mysql.connection.commit()
【问题讨论】:
-
请记住,您的 sql 插入在每个
n循环中!如果x既不小于3也不小于6,它将return password并且不会发生sql插入。 -
@IronFist 感谢您的回复,但实际上它已插入。但是,它只插入第一个字符,而不是整个字符串!我实际上意识到它在 N 循环中,所以这就是为什么它只保存一个,但是当我试图将它移到循环之外时,它不会将任何东西保存到数据库!
-
这里的问题是
x = random.randint(0, 9),可能大部分结果都大于6,这导致没有写入你的数据库,或者你可能有一个return或break下面的表达式mysql.connection.commit(),打破循环! -
@IronFist 感谢您的帮助,但我发现了问题所在。我将在下面上传我的修复。
标签: mysql python-3.x flask insert