1
sqlite3
行をPythonループで更新する際に問題があります。私はすべての行をループし、特定の列を更新しようとしています。私のコードでは、このクエリ...'where currency_name = ' + row[0]
からSQLITE3列名のWHEREステートメントを誤る
sqlite3.OperationalError: no such column: row[0] (value of it)
:
しかし、私はこのエラーを取得しています。
私が間違っている文法だと思いますか?私はそれをサブステートメントに分割しようとしましたが、それもうまくいきませんでした。私のコードは以下の通りです。
import sqlite3
import requests
conn = sqlite3.connect('cryptoindex-holdings.db')
cursor = conn.cursor()
for row in conn.execute('SELECT * FROM currency'):
r = requests.get('https://api.coinmarketcap.com/v1/ticker/' + row[0] + '/?convert=CAD')
r = r.json()
market_cap = r[0]['market_cap_cad']
sql = "UPDATE currency SET market_cap = " + market_cap + " WHERE currency_name = " + row[0]
cursor.execute(sql)
conn.commit()
と私のDBスキーマは次のとおりです。
currency (
currency_name TEXT,
market_cap REAL,
coin_price REAL,
coins_owned REAL
);
ありがとうございます。今私は文字列エスケープについて読むことを知っている:) – BGroat