如何使这个Flaskmysql insert提交?

2024-10-01 13:43:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我还在用flaskmysql。在

我得到的数据库上下文(mysql变量)很好,可以查询数据库/获取结果。只有insert不起作用:它没有抱怨(抛出异常)。它从insert方法返回True。在

这应该是在提交记录时插入记录,但是由于某些原因,当我用MySQL Workbench观察MySQL数据库时,没有任何内容被插入到表中(并且它不会从insert方法引发异常):

我把这个传给insertCmd

"INSERT into user(username, password) VALUES ('test1','somepassword');"

我检查了数据库中列的长度,并将命令复制到MySQL Workbench(它成功地将行插入表中)。在

我不知所措。我看到的所有示例似乎都遵循这种格式,并且我有一个很好的数据库上下文。你可以在评论中看到我尝试过的其他东西。在

^{pr2}$

Tags: 方法数据库true内容记录mysql原因insert
2条回答

您需要保留连接的句柄;在循环中不断重写它。在

下面是一个简化的例子:

con = mysql.connect()
cursor = con.cursor()

def insert(mysql, insertCmd):
     try:
        cursor.execute(insertCmd)
        con.commit()
        return True
     except Exception as e:
        print("Problem inserting into db: " + str(e))
        return False

如果mysql是您的连接,那么您可以直接提交:

^{pr2}$

显然,必须将connect和cursor分开,否则它将无法工作。在

要获得光标,可以使用:cursor=mysql.connect().光标()

然而,正如Burchan Khalid如此熟练地指出的那样,在这之后,为了提交而创建一个connection对象的任何尝试都将抹去您使用光标所做的工作。在

所以,你必须做到以下几点(没有捷径):

connection = mysql.connect()
cursor = connection.cursor()
cursor.execute(insertCmd)
connection.commit()

相关问题 更多 >