TypeError:cursor()使用flaskext.mysql获得了意外的关键字参数'dictionary'

时间:2018-11-19 05:01:22

标签: python mysql flask

我正在使用flask框架和MySQL数据库连接器。

我做了以下事情:

from flaskext.mysql import MySQL
mysql = MySQL()
## app.config database configuration code
mysql.init_app(app)
conn = mysql.connect()
cursor = conn.cursor();
cursor.execute(
        'SELECT * FROM customer WHERE email = (%s)', (username,)
    )
user = cursor.fetchone()

我可以使用user[8]之类的索引来访问用户列(我需要执行一次查询并检查列号),但是当我尝试指定

conn = mysql.connect(dictionary=True)

我收到错误

  

'TypeError:cursor()得到了意外的关键字参数'dictionary'

使用flask-MySQL时是否可以以字典格式获取查询结果?

1 个答案:

答案 0 :(得分:0)

您可以按照以下答案进行操作:https://stackoverflow.com/a/41388992/3129414

现有代码修改:

  • DictCursor初始化中使用MySQL
  • 从光标中删除dictionary=True
  • 使用json包将字典项转换为json格式

app.py

import json
from flask import Flask
from flaskext.mysql import MySQL
from pymysql.cursors import DictCursor

app = Flask(__name__)
app.config['MYSQL_DATABASE_USER'] = 'root'
app.config['MYSQL_DATABASE_PASSWORD'] = '123'
app.config['MYSQL_DATABASE_DB'] = 'practice_db'
app.config['MYSQL_DATABASE_HOST'] = 'localhost'
mysql = MySQL(cursorclass=DictCursor)
mysql.init_app(app)
conn = mysql.connect()

@app.route("/", methods=['GET'])
def home():
    email_address = 'dummy@example.com'
    cursor = conn.cursor();
    cursor.execute(
            'SELECT * FROM user_table WHERE email = (%s)', (email_address,)
        )
    users = cursor.fetchall()
    return json.dumps(users)

app.run(debug=True)

屏幕截图:

dictionary output using flaskext