DatabaseError: неверное количество привязок. - PullRequest
0 голосов
/ 21 июня 2020

Я пытаюсь сделать запрос из большого файла 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,], но ошибка остается то же

1 Ответ

1 голос
/ 21 июня 2020

Проверьте синтаксис pd.read_sql_query(q, conn, values). На самом деле не отправляет параметры. Просмотрите подпись функции и аргументы в do c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...