petitviolet_blog

@petitviolet blog

MySQL

SQLアンチパターンのメモ1

第Ⅰ部データベース論理設計のアンチパターンのメモ ジェイウォーク リストをカンマ区切りの文字列としてDBに格納すること 属性が複数の値を取る場合のデータの扱い方 交差テーブルを作成する 非正規形のテーブルは扱いにくいので、多対多の関係が生じるなら…

sqlalchemyでcreate tableする

以前の記事でdeclarative_baseを使ってテーブルの定義をしてマッピングするとき、 command.sqlでcreate tableをしたが、pythonからcreate tableも出来たのでメモ。 # 今回必要な分だけimport from sqlalchemy import Column, Integer, create_engine, MetaDa…

FlaskとSQLAlchemyを使っててMySQL server has gone awayってなる

flaskとsqlalchemyでapiを実装し、そのapiに対して一度リクエストしてからmysqlのwaittime_outが過ぎると OperationalError: (OperationalError) (2006, 'MySQL server has gone away') というエラーが出てしまい、うまく通信が出来なかった。 ちなみに、and…

geoalchemyで位置情報をpythonから扱う

sqlalchemyでMySQLを使うで説明したsqlalchemyでは、ここで説明したMySQLの位置情報を利用できない。 そこで、geoalchemyを使う。 インストール sudo pip install geoalchemy以上。 マッピング sqlalchemyではMySQLテーブルとマッピングするためのクラスを定…

sqlalchemyでMySQLを使う

前回はMySQLdbを使ってMySQLを利用しましたが、今回はsqlalchemyを使ってみます。 また、位置情報を利用するため、sqlalchemyだけでなく、geoalchemyを利用します。 geoalchemyについてはまた後日書きます。 準備 インストールはpipとかeasy_installとかで簡…

緯度経度の地図情報をMySQLとPythonのMySQLdbを使って扱う

地図情報(緯度経度)をMySQLで扱う。 MySQLはPythonからMySQLdbを使って扱う。 緯度はlatitude、経度はlongitude テーブル定義 これはpython関係ないsql文です。 create database geosample; use geosample; create table place ( id int auto_increment, n…

unique制約があるときのinsert

unique制約がついているテーブルに重複するデータをinsertしようとするとDuplicateエラーが発生します。 そこで以下の3通りのsqlが使える。 replaceを使う replace into ~ これはinsertをreplaceに置き換えるだけ。 重複するデータが無ければinsertを実行し…