🛠️

ColabでSQLが使えなくなったときの対処法

に公開

目的

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'

Discussion