Я пытаюсь сделать запрос из большого файла csv; Я показываю первые три строки:
import pandas as pd
df = pd.read_csv('crime.csv', nrows=3); df
введите описание изображения здесь
из-за ограничения памяти я сначала создаю файл db, а затем запрашиваю оттуда, как показано ниже:
import sqlite3
db = sqlite3.connect("crime.sqlite")
for chunk in pd.read_csv('crime.csv', chunksize=1000):
chunk.to_sql("crime", db, if_exists="append")
db.execute("CREATE INDEX NEIGHBORHOOD_ID on crime(NEIGHBORHOOD_ID)")
db.close()
Здесь я определяю функцию для чтения из только что созданного .sqlite и запрос на это:
def crime_neighbor(neighbor_id):
conn = sqlite3.connect("crime.sqlite")
q = "SELECT * FROM crime WHERE NEIGHBORHOOD_ID = ?"
values = (neighbor_id,)
return pd.read_sql_query(q, conn, values)
, когда я запускаю crime_neighbor("cbd")
, я получаю следующую ошибку:
DatabaseError: Execution failed on sql 'SELECT * FROM crime WHERE NEIGHBORHOOD_ID = ?': Incorrect number of bindings supplied. The current statement uses 1, and there are 0 supplied.
Я пытался изменить values = (neighbor_id,)
на values = [neighbor_id,]
, но ошибка остается то же