python sqlite, почему значение интерпретируется как столбец - PullRequest
0 голосов
/ 14 апреля 2020

OperationalError: нет такого столбца: fcf6082d3ada7b0ed771349398b0d91d5b2cd76f fcf6082d3ada7b0ed771349398b0d91d5b2cd76f - это элемент [0] в моем коде.

item[0] *1005* *1005*

1007 * Этот код хорошо работает в другой базе данных.

Большое спасибо! Вот мой код:

database = sql.connect('database.db')
database_cursor=database.cursor()
hashh=database_cursor.execute(f"SELECT DISTINCT hash FROM commits").fetchall()

for item in hashh:
    find=genugate_cursor.execute(f"SELECT * FROM edits WHERE commit_hash={item[0]}").fetchall()
    print(find)

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

Проблема устранена с помощью следующего кода, где добавьте '' на {item}. Однако, когда я использую sqlite, проблема все еще остается, а вместо pandas read sql он работает.

database = "./raw_data/genugate_anonymised.db"

connection = sql.connect(database)
cursor = connection.cursor()
# hashh=cursor.execute(f"SELECT DISTINCT hash FROM commits").fetchall()
hashh = pd.read_sql("""SELECT DISTINCT hash FROM commits""", connection)

for item in hashh['hash']:
    item=str(item)
    test = pd.read_sql(f"SELECT commit_hash FROM edits WHERE commit_hash='{item}'", connection)
    print(test)```

0 голосов
/ 14 апреля 2020

Привет, это потому, что вы перебираете строки, поэтому вы на самом деле находитесь в строке, пытаясь получить 1-й столбец. Вместо этого измените свой код на

database_cursor=database.cursor()
hashh=database_cursor.execute(f"SELECT DISTINCT hash FROM commits").fetchall()

for item in hashh:
    find=genugate_cursor.execute(f"SELECT * FROM edits WHERE commit_hash={item}").fetchall()
    print(find)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...