Skip to content

Instantly share code, notes, and snippets.

@arifsuhan
Last active July 7, 2023 06:22
Show Gist options
  • Save arifsuhan/2f299fa65d035914e231d9de82b5ce30 to your computer and use it in GitHub Desktop.
Save arifsuhan/2f299fa65d035914e231d9de82b5ce30 to your computer and use it in GitHub Desktop.
A script to turn csv file into sqlite3 table
#! /usr/local/bin/python3
import csv, sqlite3
class csv_2_sqlite:
def __init__(self, file_name, db_name, table_name):
self.file_name = file_name
self.db_name = db_name
self.table_name = table_name
self.con = ""
self.cur = ""
def create_connection(self):
self.con = sqlite3.connect( self.db_name )
self.cur = self.con.cursor()
def create_query(self,header):
length = len(header)
create_table_query = "CREATE TABLE "+ self.table_name + "(" + ','.join(header) + ");"
values_query = ",".join([ "?" for _ in range(length)])
insert_data_query = "INSERT INTO "+ self.table_name + "(" + ','.join(header) + ") VALUES(" + values_query + ");"
return create_table_query, insert_data_query
def read_csv(self):
db_format = []
header = []
with open(self.file_name,'r') as raw_csv:
csv_file = csv.DictReader(raw_csv)
header = csv_file.fieldnames
for key in csv_file:
temp = tuple([(v) for _,v in key.items()])
db_format.append(temp)
return db_format, header
def run(self):
self.create_connection()
db_format, header = self.read_csv()
create_table_query, insert_data_query = self.create_query(header)
self.cur.execute(create_table_query)
self.cur.executemany(insert_data_query, db_format)
self.con.commit()
self.con.close()
def main():
file_name = [file_name.csv]
db_name = [db_name.db]
table_name = [table_name]
csv_2_sqlite(file_name, db_name, table_name).run()
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment