I’m trying to insert two lists into the table where one list is inserted into one column and the other into another column where item 1 from list 1 is held in the same record as item 1 in list 2. The length of both lists is 73.
airfields = [‘Andrewsfield’,’Bagby’,’Beccles’…]
icao_codes = [‘EGSL’,’EGNG’,’EGSM’…]
| AirfieldID | Name | ICAO |
|---|---|---|
| 1 | Andrewsfield | EGSL |
| 2 | Bagby | EGNG |
| 3 | Beccles | EGSM |
This is my code, but I get an error message when I run it:
Traceback (most recent call last):
File "main.py", line 33, in <module>
data_entry()
File "main.py", line 30, in data_entry
c.execute("""INSERT INTO Airfields (Name, ICAO) VALUES (?, ?)""", (airfields[count],), (icao_codes[count],))
TypeError: function takes at most 2 arguments (3 given)
def data_entry():
count = 1
while count != 73
c.execute("""INSERT INTO Airfields (Name, ICAO) VALUES (?, ?)""", (airfields[count],), (icao_code[count],))
count = count + 1
Any help would be appreciated.
>Solution :
c.execute("""INSERT INTO Airfields (Name, ICAO) VALUES (?, ?)""", (airfields[count],), (icao_codes[count],))
TypeError: function takes at most 2 arguments (3 given)
execute takes its values as a tuple. You’ve passed two tuples, (airfields[count],) and (icao_codes[count],). With the SQL statement that means 3 arguments, execute takes 2.
You’d use one tuple, a single set of parenthesis, for all values: (airfields[count], icao_codes[count]).
c.execute("""INSERT INTO Airfields (Name, ICAO) VALUES (?, ?)""", (airfields[count], icao_codes[count]))
Note: You can write your loop better with for x in range.
for count in range(1, 72):
c.execute("""INSERT INTO Airfields (Name, ICAO) VALUES (?, ?)""", (airfields[count], icao_code[count]))