flask + SQLite3 + Chart.jsでグラフを描く

なんとかやっと、flask上でSQLでデータを引き出し、Chart.jsに渡してグラフにすることができた。

途中詰まったのが、fetchall()で謎のtupleが取得されてしまうことで、無駄とは思いつつも

 

    db = get_db()
    db.row_factory = sqlite3.Row
    cur = db.execute("select country from cotwo")
    country = cur.fetchall()
    country_l = []
    for c in country:
        country_l.append(c[0])

 

のように、欲しいものだけを改めてリストに格納しなおした。

 

さらに、リストをそのままhtml側に渡したところ、値を囲うアポストロフィがHTML特殊文字のためコードに変換されてしまったので、

 

                {% autoescape false %}
                labels: {{data1}},
                {% endautoescape %}

 

エスケーブしないようにしないとデータが正常にChart.jsに渡らなかった。

問題はこうしたことが書籍にもWebにもどこにも書いていないところ。

あと、上記の謎のtupleについては他の人もWeb上で質問していて、その解決方法としてSQLalchemyを使うと良い、というのがあったけれど、また何か学ばないといけないのか、とげんなりしてしまった。とりあえず上記でなんとかなったのだけれど、でも確かにあまり美しくない。