On the executemany
you have three "?"-marks but 4 parameters. It is probably missing an additional questionmark. Also you should probably just use execute instead of executemany
since you only do one insert. Like this:
cur.execute("INSERT INTO TWEETS(?, ?, ?, ?)", (status.text,
status.author.screen_name,
status.created_at,
status.source))
Also the correct SQL according to this would be:
INSERT INTO TWEETS VALUES(?, ?, ?, ?)