1

I am learning myself some programming with python and make use of SQlite3 I keep running into the same problem, and I can't figure out what goes wrong.

My table setup

def user_table():
    data = lite.connect(database)
    dat = data.cursor()

    with data:
        dat.executescript("""CREATE TABLE IF NOT EXISTS Users(Id INTEGER PRIMARY KEY AUTOINCREMENT,
        'Username' UNIQUE,
        'Password',
        'Email',
        'UserCharacters_Id' INTEGER
        )""");

Now my code to select a Username (the username 123 exists and tables seem right (checked with SQLite studio)

database = 'test.db'
data = lite.connect(database)
dat = data.cursor()
with data:
    dat.execute("SELECT * FROM Users WHERE 'Username'='123'")
    user = dat.fetchone()   
    print user

I tried a lot of different ways, but it keeps returning None. The python part seems to be working, just the select part of SQL goes wrong (checked with prints)

Please help me out

0

1 Answer 1

2

In SQL, single quotes are used for strings, while table/columns names are quoted with double quotes. (SQLite supports single quotes for the latter for compatibility with MySQL in some places.)

Your query compares the string Username against the string 123, and this comparison fails for every record.

Use this:

dat.execute('SELECT * FROM Users WHERE "Username" = \'123\'')

But to prevent string formatting problems and SQL injection attacks, you should use parameters:

username = "123"
dat.execute('SELECT * FROM Users WHERE "Username" = ?', (username,))
Sign up to request clarification or add additional context in comments.

2 Comments

Bows thanks a lot, (I was doing the last part in other parts, but to simplify I tested with the 123). This helps me out a lot (works now). Thanks :)
In that case, accept the answer :-) Press the symbol beneath the lower voting arrow.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.