【问题标题】:Why MySql is saving only first character of the string? (I am using python 3)为什么 MySql 只保存字符串的第一个字符? (我正在使用python 3)
【发布时间】: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,这导致没有写入你的数据库,或者你可能有一个returnbreak下面的表达式mysql.connection.commit(),打破循环!
  • @IronFist 感谢您的帮助,但我发现了问题所在。我将在下面上传我的修复。

标签: mysql python-3.x flask insert


【解决方案1】:

这是解决方案:

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(',.;:-_*%&/()=?!'))
            else:
                passwordd += str(random.randrange(0, 9))

        cur = mysql.connection.cursor()
        cur.execute("INSERT INTO generatedcode(password) VALUES (%s)", [passwordd])
        mysql.connection.commit()
        cur.close()
        return passwordd

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    • 2018-07-15
    • 2018-12-11
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多