|
import csv |
|
import sqlite3 |
|
|
|
from path import csv_file_path |
|
|
|
|
|
def csv_to_sqlite(csv_file_path, sqlite_db_path): |
|
conn = sqlite3.connect(sqlite_db_path) |
|
cursor = conn.cursor() |
|
count = 0 |
|
with open(csv_file_path, newline='') as csvfile: |
|
reader = csv.reader(csvfile) |
|
headers = next(reader) |
|
|
|
column_types = {header: 'TEXT' for header in headers} |
|
for col in ['Rating', 'RatingDeviation', 'Popularity', 'NbPlays']: |
|
if col in column_types: |
|
column_types[col] = 'INTEGER' |
|
|
|
table_name = csv_file_path.split('/')[-1].split('.')[0] |
|
columns = ', '.join([f'"{header}" {column_types[header]}' for header in headers]) |
|
cursor.execute(f'CREATE TABLE IF NOT EXISTS "{table_name}" ({columns})') |
|
max_rating = 0 |
|
|
|
for row in reader: |
|
max_rating = max(max_rating, int(row[3])) |
|
count += 1 |
|
placeholders = ', '.join(['?' for _ in headers]) |
|
cursor.execute(f'INSERT INTO "{table_name}" VALUES ({placeholders})', row) |
|
conn.commit() |
|
conn.close() |
|
return count |
|
|
|
|
|
total_count = csv_to_sqlite(csv_file_path, "all_puzzles.db") |
|
|
|
print(total_count) |
|
|