Flask, пытается прочитать данные из mysql db (не все аргументы преобразуются во время форматирования строки) - PullRequest
0 голосов
/ 11 мая 2018

Попытка создать страницу с диаграммой. Я использую инфраструктуру Flask и базу данных MySQL.

@app.route("/grafiek")
def chart():
    data = []
    years = optimize_list(get_data("SELECT DISTINCT year FROM tbldata"))
    print(years)

    sql = "SELECT cast(sum(Number_employees) as signed) FROM  tbldata"
    sql += "WHERE year = (%s) GROUP BY year, month ORDER BY year, month ASC"
    print(sql)

    for year in years:
        data_part = optimize_list(get_data(sql, year))
        data.append(data_part)

        print(data)

        labels = optimize_list(get_data("SELECT DISTINCT month FROM faillisementen.tbldata"))
        titels= "Number Employees in faillisementen"
        colors = ['red', 'green']

        return render_template("chart.html", data=data, labels=labels)

При запуске я получаю ошибку:

getting data
SELECT cast(sum(Nulber_employees) as signed) FROM  tbldata
not all arguments converted during string formatting

Я предполагаю, что ошибка связана с этими строками:

sql = "SELECT cast(sum(Number_employees) as signed) FROM  tbldata"
sql += "WHERE year = (%s) GROUP BY year, month ORDER BY year, month ASC"

Как мне это исправить, пожалуйста?

Обновление: Я получаю сообщение об ошибке «не все аргументы преобразуются во время форматирования строки», когда вторая строка с (% s) не используется. Когда эта строка используется, я получаю другую ошибку.

(1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= (2011) GROUP BY jaar, maand ORDER BY jaar, maand ASC' at line 1")

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Я нашел другой способ ввода данных из моей базы данных в мой график.

Спасибо, тем не менее.

def get_faillissementen(jaar):
    connectie = mysql.connect()
    cursor = connectie.cursor()

    try:
        cursor.execute("select sum(Aantal_faillissementen) from data where jaar = '%s' group by Maand ", jaar)

    except Exception as e:
        print(e)

    # alles eruit halen
        # Als je maar 1 gegeven hebt => fetchone()
    results = cursor.fetchall()
    db_data = []

   for row in results:
        db_data.append(int(row[0]))


    cursor.close()
    connectie.close()

    return db_data

@app.route("/chart")
def chart():
    jaar_2011 = get_faillissementen(2011)
    jaar_2012 = get_faillissementen(2012)
    jaar_2013 = get_faillissementen(2013)

Это сделало это намного проще.

0 голосов
/ 11 мая 2018

Возможно, это (% s) во второй строке:

sql + = "ГДЕ год = (% s) GROUP BY год, месяц ORDER BY год, месяц ASC"

Если удалить эту строку, это работает?

См. Python MySQLdb TypeError: не все аргументы преобразованы во время форматирования строки

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