TypeError: курсор () получил неожиданный аргумент ключевого слова «словарь» с помощью flaskext.mysql - PullRequest
0 голосов
/ 19 ноября 2018

Я использую флеш фреймворк и коннектор базы данных 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)

Я получаю ошибку

'Ошибка типа: курсор () получил неожиданный аргумент ключевого слова' словарь ''

Есть ли способ получить результаты запроса в формате словаря при использовании flask-MySQL?

1 Ответ

0 голосов
/ 19 ноября 2018

Вы можете следовать этому ответу: 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...