#python #mysql
#python #mysql
Вопрос:
Я записываю данные в файл на Python из таблиц баз данных MYSQL с жестко закодированными верхними и нижними колонтитулами, используя следующий код:
for record in cur.fetchall():
filteredrecord = (record[0] "t" record[1])
print(filteredrecord)
feed_file = open("c:\test\test.txt", "w")
feed_file.write("Name" "t" "Age" )
feed_file.write("n" (filteredrecord))
feed_file.write("n" "ENDOFFILE")
feed_file.close()
Это отлично работает, когда в таблице базы данных присутствуют записи, однако, когда в таблице базы данных, из которой я выбираю, нет записей, в мой файл ничего не записывается, даже мои жестко закодированные верхние и нижние колонтитулы.
При наличии записи я получаю следующий вывод:
вывод при наличии записей в таблице db
Я хотел бы, чтобы в мой файл было записано следующее, когда записей нет:
вывод необходим, когда в таблице db нет записей
Как я могу заставить вышеуказанное записать в файл, когда в моей таблице базы данных нет записей?
Ответ №1:
У вас есть весь ваш код для открытия файла, записи верхнего и нижнего колонтитулов и повторного закрытия файла, и все это в цикле for итерации по записям, возвращенным из запроса. Фактически, если у вас более одной записи, следует продолжать открывать файл, перезаписывать содержимое новой записью, включая верхний и нижний колонтитулы, и закрывать файл.
Что вы хотите, так это открыть файл один раз, записать верхний колонтитул, затем перебрать записи и записать каждую, затем, наконец, записать нижний колонтитул и закрыть файл. Код может выглядеть примерно так:
with open("c:\test\test.txt", "w") as feed_file:
feed_file.write("Name" "t" "Age" )
for record in cur.fetchall():
filteredrecord = (record[0] "t" record[1])
print(filteredrecord)
feed_file.write("n" (filteredrecord))
feed_file.write("n" "ENDOFFILE")
Обратите внимание, что вам не нужно явно закрывать файл при использовании with
структуры.