У вас есть весь код для открытия файла, написания верхнего и нижнего колонтитула и повторного закрытия файла, и все это в цикле 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
.
В основном ленивая загрузка обладает большим количеством преимуществ, чем нетерпеливая альтернатива (производительность, использование ресурсов). Так как это - установка чаш Грааля по умолчанию для всех отношений (начиная с Grails 1.1), Вы не должны обычно настраивать его для нетерпеливой выборки, если Вы не испытываете определенные вопросы. Такой как:
Нетерпеливая выборка может быть довольно опасной при контакте с огромными базами данных. Вообразите Доменный класс как это:
// really bad example
class TreeNode {
String name
TreeNode parent
static hasMany = [ childNodes: TreeNode ]
static mapping {
parent lazy: false
childNodes lazy: false
}
}
при чтении любого из экземпляров TreeNode это автоматически вытянет все другие экземпляры доменного класса от базы данных в память. Когда будет достаточно экземпляров, Вы, вероятно, уничтожите Вас приложение путем выборки только 1 экземпляра.