Я запускаю этот код в python 3.6 (pythonanywhere.com), используя MySQL
import MySQLdb
conn = MySQLdb.connect('username.mysql.pythonanywhere-services.com', 'username', 'password', 'username$to_do')
c = conn.cursor()
c.execute('SELECT task FROM list')
rows = c.fetchall()
list_em = []
number = 0
for eatchRow in rows:
list_em.append(eatchRow)
print("nr %s: %s" % (number, list_em[number]))
number += 1
del1 = int(input("Chose the number of the list item you want to delete: "))
delstatmt = "DELETE FROM list WHERE task = ?"
print (list_em[del1])
#c.execute(delstatmt, (list_em[del1],))
Я создаю список под названием "list_em" и заполняю содержимое из столбца "task" в таблице "list". Я хотел бы "print (list_em [del1])", чтобы вернуть чистую строку "Gå med hunden" -A, которую я могу использовать для запуска последнего скрипта, который закомментирован. Вместо этого получите что-то похожее на это с помощью скобок и запятой (из консоли):
nr 0: ('Skura Trappan',)
nr 1: ('Gå med hunden.',)
Chose the number of the list item you want to delete: 1
('Gå med hunden.',)
OBS! В таблице нет идентификатора, всего два столбца:
mysql> select * from list;
+-----------------+-------------+
| task | status |
+-----------------+-------------+
| Skura Trappan | Not started |
| Gå med hunden. | Not started |
+-----------------+-------------+
2 rows in set (0.00 sec)
То, что вы получаете от библиотеки MySQL, - это список кортежей, по одному для каждой строки, возвращаемой запросом. Элементами каждого кортежа являются значения столбцов, на которые вы запрашиваете.
В этом случае вы запрашиваете один столбец, поэтому каждый элемент списка является одноэлементным кортежем, который Python будет представлять как (
значение ,)
- это то, что вы видите.
Поэтому, чтобы распечатать только значение из кортежа, вам нужно извлечь его, как и со списком:
for eatchRow in rows:
list_em.append(eatchRow[0])
print("nr %s: %s" % (number, list_em[number]))
number += 1