Список записей в базе данных SQL Lite с Genie

Теперь, когда я создал базу данных SQL ( 1 , 2 ), я хочу что-то с ней сделать. Я начал небольшую функцию для обработки печати содержимого набора данных, однако я не могу понять, как:

  • отрегулировать пространство между строками в команде печати, чтобы он стал правильно оправданным? Можно сделать это на python, используя ljust (), но как сделать что-то подобное с Genie?
  • перебирать все записи в наборе данных? Насколько я понимаю, в Genie нет эквивалента курсора (может быть, я ошибаюсь здесь).
  • подключиться к созданной базе данных? Как его открыть?
  • Дополнительная точка: как создать заглушку с джинном? Я хотел создать пустые функции и классы, чтобы дать пустую структуру коду, однако в genie отсутствует команда pass и кажется, что компилятор не принимает пустые операторы if или функции.

Это код python, который я пытаюсь имитировать:

  def PrintAllRecipes(self): print '%s %s %s %s' % ('Item'.ljust(5),'Name'.ljust(30),'Serves'.ljust(20),'Source'.ljust(30)) print '--------------------------------------------------------------------------------------' sql = 'SELECT * FROM Recipes' cntr = 0 for x in cursor.execute(sql): cntr += 1 print '%s %s %s %s' % (str(x[0]).rjust(5),x[1].ljust(30),x[2].ljust(20),x[3].ljust(30)) print '--------------------------------------------------------------------------------------' self.totalcount = cntr 

Вот как далеко я получил:

 [indent=4] class Cookbook def PrintAllRecipes() print "%s %s %s %s" % ("Item".ljust(5),"Name".ljust(30),"Serves".ljust(20),"Source".ljust(30)) print "--------------------------------------------------------------------------------------" var sql = "SELECT * FROM Recipes" var cntr = 0 for x in cursor.execute(sql) cntr += 1 print "%s %s %s %s" % (str(x[0]).rjust(5),x[1].ljust(30),x[2].ljust(20),x[3].ljust(30)) print "--------------------------------------------------------------------------------------" self.totalcount = cntr def raw_input (query : string? = null) : string? if (query != null) stdout.printf ("%s", query) return stdin.read_line () init //def Menu() //cbk = Cookbook() //var loop = True print "===================================================" print " RECIPE DATABASE " print " 1 - Show All Recipes" print " 2 - Search for a recipe" print " 3 - Show a Recipe" print " 4 - Delete a recipe" print " 5 - Add a recipe" print " 6 - Print a recipe" print " 0 - Exit" print "===================================================" response:string = raw_input("Enter a selection -> ") 

  • Перемещение между базами данных на диске и быстрой базой данных в памяти?
  • Как создать файл CSV из базы данных в Python?
  • Запись в файл Stata в Python. Ядро умерло. Зачем? Что делать?
  • Получить список значений полей из sqlite3 Python, а не кортежей, представляющих строки
  • AUTO_INCREMENT в проблеме sqlite с python
  • Имя переменной в sqlite
  • tweepy stream to sqlite database - синтаксическая ошибка
  • Django: развертывание приложения на Heroku с sqlite3 в качестве базы данных
  • One Solution collect form web for “Список записей в базе данных SQL Lite с Genie”

    Genie `print` Форматирование

    Команда печати Genie использует форматирование printf – см. https://en.wikipedia.org/wiki/Printf_format_string. В вашем примере первая строка будет выглядеть так:

     print "%-5s%-30s%-20s%-30s", "Item", "Name", "Serves", "Source" 

    Знак минус служит для выравнивания по левому краю, затем число – это ширина.

    Открытие базы данных SQLite

    Чтобы открыть базу данных SQLite, вы используете:

     Database.open( "database_name.sqlite", out database ) 

    Как и для создания файла базы данных. SQLite создаст файл базы данных, если он не существует. Таким образом, open и create – это одна и та же команда.

    Заявление Genie `pass`

    Заглавие if :

     if true pass 

    Функция заглушки:

     def stub_example() pass 

    Утверждение pass также может быть расширено для классов и пространств имен, но это не было реализовано. Поэтому, если вы доберетесь до стадии взлома анализатора Genie, это может быть полезной задачей. На данный момент вам нужно добавить фиктивное значение / функцию в класс:

     class placeholder dummy:string = "" 

    Избегайте «null», используйте разумные значения по умолчанию

    Присвоение null идентификатору означает, что оно не имеет значения, идентификатор является нулевым указателем. Попытка доступа к нулевому указателю, например, в арифметических выражениях, приведет к сбою программы. Это заставило CARHoare назвать его изобретение нулевой его «ошибкой миллиарда долларов» – см. https://en.wikipedia.org/wiki/Null_pointer#History для цитаты. Программисты C имеют тенденцию использовать нуль, поэтому Genie поддерживает null для совместимости с C-интерфейсами. Однако лучше использовать разумное значение по умолчанию. Для вашей функции raw_input, если никакое приглашение не передается, пустая строка прекрасна или приглашение по умолчанию, такое как «>». Это также позволяет избежать нулевой проверки, что является еще одним недостатком использования null. Вы должны постоянно проверять, что идентификатор не равен нулю. stdin.readline также ждет, пока не будет введена строка. Даже если это пустая строка, когда пользователь просто нажимает кнопку ввода, поэтому он никогда не возвращает значение null. Ваша функция может быть переписана как:

     def raw_input (query:string = ""):string stdout.printf ("%s", query) return stdin.read_line () 

    Получение результатов выбора запроса

    В Valadoc есть примеры использования либо exec (), либо подготовленного оператора. Хотя они в Вале.

    Для exec () вы передаете функцию обратного вызова, которая вызывается для каждой строки в результате. Функция обратного вызова будет передана количество столбцов в результате, массив значений в виде текста и массив имен столбцов. См. http://valadoc.org/#!api=sqlite3/Sqlite.Database.exec

    Для подготовленного оператора функция step () возвращает Sqlite.ROWS, пока в результате не будет больше строк. Таким образом, вы перебираете это и читаете столбцы из подготовленного оператора. См. http://valadoc.org/#!api=sqlite3/Sqlite.Statement

    PS Для вашего меню вы могли использовать строку verbatim

    Interesting Posts

    Классы словаря Python (которые являются объектами класса) сравниваются с несколькими компараторами

    Проблема с запуском скрипта python как cgi под apache (ubuntu 12)

    многопроцессорность Слушатели и клиенты между python и pypy

    Я пытаюсь напечатать только выбранное количество Pi, оно возвращается с ошибкой «Decimal не имеет атрибута: __getitem__

    Django – передать переменную js в django view

    Как мне форматировать длинный URL-адрес в комментарии python и по-прежнему соответствовать PEP8

    Суммирование массивов по характеристикам в Python

    Цепочки QSortFilterProxyModels

    Что такое «Отображение символов типаError должно возвращать целое число …» в этом коде python?

    Как я могу обновить пакет sqlite3 в Python 2.6?

    python argparse с зависимостями

    Задания с несколькими присваиваниями Python в одной строке

    Как рассортировать scapy-пакет?

    Обтекание пользовательского типа указателем C ++ в Cython

    Что такое `related_name`, используемый в Django?

    Python - лучший язык программирования в мире.