#mysql-connector-python
#mysql-connector-python
Вопрос:
У меня есть этот метод для выполнения запросов:
def exeQuery(query, data, dbEdit ):
try:
myDatabase = mysql.connector.connect(**dbLoginInfo)
cursor = myDatabase.cursor()
except mysql.connector.Error as e:
print('[ERROR WHILE CONNECTING TO DATABASE]: ', e)
else:
if dbEdit == True:
if data == None:
res = cursor.execute(query)
myDatabase.commit()
else:
res = cursor.execute(query, data)
myDatabase.commit()
else:
if data == None:
cursor.execute(query)
res = cursor.fetchall()
else:
cursor.execute(query, data)
res = cursor.fetchall()
cursor.close()
myDatabase.close()
#print(type(res))
#print(res)
return res
И я называю это здесь:
@app.route("/profil/delete", methods= ['POST'])
@token_required
def deleteProfil():
dicUser = decodeToken(request.args.get('token'))
profilName = request.args.get('profilName')
path = exeQuery('SELECT profilbild FROM Profil WHERE profilName = %s AND konto_email = %s', (profilName, dicUser['user']), False)
print(path)
return Response(status = 200)
Он должен напечатать меня ('pics/jj@gmail.de/DelProf.png',)
один раз.
По какой-то причине я получаю правильные данные, но иногда форматирование меняется. Каждый раз в базе данных была только одна строка, подходящая для запроса. Это три вывода, которые я получил до сих пор:
[('pics/jj@gmail.de/DelProf.png',), ('pics/jj@gmail.de/DelProf.png',), ('pics/jj@gmail.de/DelProf.png',), ('pics/jj@gmail.de/DelProf.png',)]
[('pics/jj@gmail.de/DelProf.png',)]
('pics/jj@gmail.de/DelProf.png',)
Ответ №1:
Метод MySQLCursor.fetchall()
возвращает список кортежей. как упоминалось здесь: https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-fetchall.html . Даже если результатов нет, он вернет a list
, но пустой []
. Если вы получили список с повторяющимися значениями, возможно, что ваш запрос может найти эти совпадения.