【问题标题】:How to create table and insert data using MySQL and Flask如何使用 MySQL 和 Flask 创建表和插入数据
【发布时间】:2015-06-04 22:01:28
【问题描述】:

我正在尝试将数据插入 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()

【问题讨论】:

  • 从命令行运行脚本并捕获错误,将其打印并包含在此处。另外,您是否尝试过使用 SQLAlchemy?
  • @john 是的,我从命令行运行脚本,没有弹出错误,但是当我本地主机时,它给了我内部服务器错误,当我将“2222”更改为“1234”时还有一件事在查询部分,它给了我 HTTP 200:OK 但没有向数据库中插入任何东西。
  • 将块封装在try catch中,捕获错误。肯定会有输出。
  • 我对这件事完全陌生,SQLAlchemy 会使用 python 和 flask 用 mysql 完成 CRUD 的工作吗?
  • 它减少了编写 sql 查询的需要。查询变为:dbdefs.potlala.query.filter_by(patella_id = your_variable)

标签: python mysql flask


【解决方案1】:

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

query = "CREATE TABLE ..."
cursor.execute(query)
query = "INSERT INTO ..."
cursor.execute(query)

【讨论】:

    【解决方案2】:

    你应该做两件事:

    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()
    

    【讨论】:

    • 注意这里的sql注入('2222', 'Maria', 'mariaz@activestate.com')
    猜你喜欢
    • 2018-04-07
    • 2022-11-13
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 2011-06-16
    • 2017-04-17
    相关资源
    最近更新 更多