如何使用 MySQL 和 Flask 创建表并插入数据

imm*_*eel 1 python mysql flask

我正在尝试将数据插入 MySQL 表中。我能够连接到数据库,但在尝试插入数据时出现内部服务器错误。

from flask import Flask
from flaskext.mysql import MySQL

mysql = MySQL()
app = Flask(__name__)
app.config['MYSQL_DATABASE_USER'] = 'root'
app.config['MYSQL_DATABASE_DB'] = 'test'
app.config['MYSQL_DATABASE_HOST'] = 'localhost'
mysql.init_app(app)

@app.route("/")
def create_table():
    cursor = mysql.get_db().cursor()
    query = "CREATE TABLE potlala (id INT NOT NULL PRIMARY KEY, name  VARCHAR(40), email VARCHAR(40))"
    query = "INSERT INTO pot13 (id, name, email) VALUES ('2222', 'Maria',  'mariaz@activestate.com')"
    cursor.execute(query)
    return "123"

if __name__ == "__main__":
    app.run()
Run Code Online (Sandbox Code Playgroud)

dav*_*ism 5

您设置query为创建表语句,但在将其设置为插入语句并尝试执行该语句之前从未执行过它。该表不存在,因此插入失败。首先执行第一个查询。

query = "CREATE TABLE ..."
cursor.execute(query)
query = "INSERT INTO ..."
cursor.execute(query)
Run Code Online (Sandbox Code Playgroud)


小智 5

您应该做两件事:

  1. 单独执行您的查询。
  2. 使用 sql 连接提交(或回滚)您的更改。
connection = mysql.get_db()
cursor = connection.cursor()
query = "CREATE TABLE potlala (id INT NOT NULL PRIMARY KEY, name  VARCHAR(40), email VARCHAR(40))"
cursor.execute(query)
query = "INSERT INTO pot13 (id, name, email) VALUES ('2222', 'Maria',  'mariaz@activestate.com')"
cursor.execute(query)
connection.commit()
Run Code Online (Sandbox Code Playgroud)