Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
808 views
in Technique[技术] by (71.8m points)

python - Return records for 100 specific surnames

I have a tuple, l, with 100 surnames. How can I do something like this in sqlite3:

l = ("Smith", "Murphy", "Owens", ...)
with sqlite3.connect("census.sqlite") as conn:
    c = conn.cursor()
    c.execute('select firstname, surname from census_data where surname in ?',(l,))

so that I can return all the records for the surnames contained in l.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Question: return all the records for the surnames contained in a tuple

The core is, create a Query with as much bindings - ? - as in the sequence.
The [:-1] is needed to exclude the last comma ...?,.

  • SQL As Understood By SQLite - whereclause

    surnames = ("Smith", "Murphy", "Owens")
    bindings = '?,'*len(surnames)
    QUERY = "select firstname, surname from census_data where surname in ({});"
              .format(bindings[:-1])
    print(QUERY)
    # >>> select firstname, surname from census_data where surname in (?,?,?);
    cur.execute (QUERY, surnames)
    

Tested with Python:3.5.3 - sqlite3:2.6.0


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

56.8k users

...