目的
Colab上でSQLのマジックコマンドを使う機会があるのですが、エラーが出て急に使えなくなりました。
実行したコード
# SQL接続
%load_ext sql
%sql sqlite:///:memory:
# テーブル作成
%%sql
DROP TABLE IF EXISTS sample_db;
CREATE TABLE sample_db(product_id TEXT UNIQUE, product_name TEXT, price INT);
INSERT INTO sample_db VALUES('001','商品1',1000), ('002','商品2',1200), ('003','商品3',2900);
%%sql
SELECT * FROM sample_db
エラーメッセージ
<decorator-gen-157> in execute(self, line, cell, local_ns)
<decorator-gen-156> in execute(self, line, cell, local_ns)
/usr/local/lib/python3.10/dist-packages/sql/run.py in __init__(self, sqlaproxy, config)
114 list.__init__(self, sqlaproxy.fetchall())
115 self.field_names = unduplicate_field_names(self.keys)
--> 116 self.pretty = PrettyTable(self.field_names, style=prettytable.__dict__[config.style.upper()])
117 else:
118 list.__init__(self, [])
KeyError: 'DEFAULT'
対処方法
以前は、基本何もオプションをつけずに実行して問題なかったので、焦ったのですがエラーメッセージで出ている「DEFAULT」が悪さしているようで色々と調べたら、
- 「SqlMagic.style」が無指定だと「DEFAULT」にある
- その「DEFAULT」が上手くいっていない
ということだったようです。
そこで、「SqlMagic.style」を「_DEPRECATED_DEFAULT」にすると、上手く動きました。
%config SqlMagic.style = '_DEPRECATED_DEFAULT'