Python Using Databases in Python Our Diary App Switching It Up

Julien riera
Julien riera
14,665 Points

Quotes and choice variable

Hi everybody. I have an issue here. Actually, my code runs perfectly, but only if I enter a quoted letter, like "a". (or any other letter specified as long as I wrap it between quotes)

Here's my code :

#!/usr/bin/env python

from collections import OrderedDict
import datetime

from peewee import *

db = SqliteDatabase('diary.db')

class Entry(Model):
    content = TextField()
    timestamp = DateTimeField(

    class Meta:
        database = db

def initialize():
    """Create the database and the table if they don't exist."""
    db.create_tables([Entry], safe=True)

def menu_loop():
    """Show the menu"""
    choice = None

    while choice != 'q':
        print('Enter "q" to quit.')
        for key, value in menu.items():
            print('{}) {}'.format(key, value.__doc__))  #__doc__ capture le docstring d'une fonction. Dans ce cas, il permet de le print.
        choice = input('Action: ').lower().strip()

        if choice in menu:

def add_entry():
    """Add an entry"""

def view_entries():
    """View previous entries"""

def delete_entry(entry):
    """Delete an entry"""

menu = OrderedDict([
    ('a', add_entry),
    ('v', view_entries),

if __name__ == '__main__':

If I write a, v or q without these quote marks in my input, it just returns an error. See :

Traceback (most recent call last):
  File "./", line 58, in <module>
  File "./", line 34, in menu_loop
    choice = input('Action: ').lower().strip()
  File "<string>", line 1, in <module>
NameError: name 'a' is not defined

Thanks in advance for enlighting me ! :)

3 Answers

Ali Ikram
Ali Ikram
3,056 Points

I'm having the same problem when using #!/usr/bin/env python. However, its fine when I'm using #!/usr/bin/env python3. So, I believe it something to do how python 2 and 3 takes the input.

Julien riera
Julien riera
14,665 Points

Hi, thanks for your answer.

Problem is when I put Python3, which I did in the first place, it displays an import error.

Traceback (most recent call last):
  File "./", line 7, in <module>
    from peewee import *
ImportError: No module named 'peewee'
Rick Ertl
Rick Ertl
7,278 Points

Check out this question and the teacher's answer. It helped me with the same issue since I use Python 2.7..

>>>related question