年末の大掃除ですね。古いコードを再利用しようとしたらひっかかりました。PHP って互換性ないんですね。
mysql_xxx この辺を全部 mysqli クラスの関数へ変換。変数の順序が違う。
迷惑ですね。
しかしながら思うんですが…
プログラミング言語ってのはプロトコルですよ。一方的な変更は勝手ですよね。
少なくとも互換性は確保してほしい。
火曜日, 12月 26, 2017
月曜日, 12月 25, 2017
MySQL で、NULL 値
MySQL で、NULL 値を許可するかどうかで条件分岐が変わってきます。
LIKE では NULL 値をはじけないんですね。
コラムの値で NULL 値を許可するなら、OR で指定せねばなりません。
これなんですが、ここの status の値が NULL の場合、こうやって指定せねばなりません。
LIKE では NULL 値をはじけないんですね。
コラムの値で NULL 値を許可するなら、OR で指定せねばなりません。
SELECT * FROM pages WHERE menuid=$id AND NOT status LIKE 'onhold' ORDER BY id desc
SELECT * FROM pages WHERE menuid=$id AND (status IS NULL OR NOT status LIKE 'onhold') ORDER BY id desc
気を付けましょう。
金曜日, 11月 03, 2017
MySQL でコラム(列)の値を交換
MySQL でコラム(列)の値を交換する方法です。
変数を使います。
使わないと MySQL ではできないようです。
変数を使います。
使わないと MySQL ではできないようです。
update 'table' set start=(@tmp:=`X`), X=Y, Y=@tmp
火曜日, 8月 29, 2017
Python 3.6 でユニコードを扱う場合。
Python 3.6 でデータベースからユニコード文字列をとってきて書きだそうと思うと引っかかります。
要はこれです。
ユニコードを指定します。でないとエラーを出します。
要はこれです。
f=open('test.txt', 'w', encoding="utf-8")
ユニコードを指定します。でないとエラーを出します。
月曜日, 8月 28, 2017
Python/MySQL のクエリーで%を使う
単純な話ですが ...
Python 3.6 はライブラリが一通りそろっていて文字列処理が楽です。
データベースを使うなら mysql-connector-python のようなドライバを導入してアクセスします。
クエリの書き方ですが、カーソルの execute() メソッドを使います。
クエリをそのままかくのもいいんですが、パラメタ化してエスケープするやり方です。
このカッコ、コンマは省略できません。
ここまでは既出だと思うんですが、ここで % を使いたい場合。
つまんない話なんですが、ネットでなかったんですよね。直接の記述が。これパラメタそのものをいじればいいんです。
これで%が使えます (いや、それだけです)。
Python 3.6 はライブラリが一通りそろっていて文字列処理が楽です。
データベースを使うなら mysql-connector-python のようなドライバを導入してアクセスします。
クエリの書き方ですが、カーソルの execute() メソッドを使います。
クエリをそのままかくのもいいんですが、パラメタ化してエスケープするやり方です。
cur.execute("select * from genera where latin like %s", (genus,))
このカッコ、コンマは省略できません。
ここまでは既出だと思うんですが、ここで % を使いたい場合。
つまんない話なんですが、ネットでなかったんですよね。直接の記述が。これパラメタそのものをいじればいいんです。
genus = genus +"%"
これで%が使えます (いや、それだけです)。
火曜日, 2月 25, 2014
MySQL: テーブル構造を取得し、SQL文に変換する
MySQLでテーブル構造を取得するには、DESCRIBE (テーブル名) などのSQL文を使用します。
これをSQL文に変換するには、テーブルの情報をSQL文の形式でそれぞれ記述してやる必要があります。
ここで気をつけねばならないのは、timestamp値をとるコラムです。
デフォルト値に CURRENT_TIMESTAMP をとるコラムは、TIMESTAMP 値をとるコラムより前に記述しなければなりません。
コラムを並べ替える必要があります。
ここでは array_unshift() という関数を使用し、CURRENT_TIMESTAMP をとるコラムを配列の最初に格納するという方法をとりました。
ソースコード: GitHub: tablestructure.php
これをSQL文に変換するには、テーブルの情報をSQL文の形式でそれぞれ記述してやる必要があります。
CREATE TABLE IF NOT EXISTS `notes` ( `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `id` int(11) NOT NULL AUTO_INCREMENT, `title` text COLLATE utf8_unicode_ci NOT NULL, `description` text COLLATE utf8_unicode_ci NOT NULL, `videoid` text COLLATE utf8_unicode_ci NOT NULL, `imagefile` text COLLATE utf8_unicode_ci NOT NULL, `docnum` text COLLATE utf8_unicode_ci NOT NULL, `shortdesc` text COLLATE utf8_unicode_ci NOT NULL, `onhold` int(11) NOT NULL, `registered` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=61 ;
ここで気をつけねばならないのは、timestamp値をとるコラムです。
デフォルト値に CURRENT_TIMESTAMP をとるコラムは、TIMESTAMP 値をとるコラムより前に記述しなければなりません。
コラムを並べ替える必要があります。
ここでは array_unshift() という関数を使用し、CURRENT_TIMESTAMP をとるコラムを配列の最初に格納するという方法をとりました。
ソースコード: GitHub: tablestructure.php
登録:
投稿 (Atom)
Flask の Blueprint のテンプレート問題
Flask の Blueprint は、ルート、静的ファイル、テンプレートをまとめて管理できます。しかし、テンプレートが指定できません。 ここでは、Blueprint の template_folder の問題点と回避策を説明します。 Blueprint のテンプレート問題...
-
コンデンサマイク 極性があります コンデンサマイクがようやく届きました。モジュールではないのでそのままでは信号が弱いので使えません。信号を増幅する必要があります。 ちょっとした手間ですが、首尾よく動いてくれました。この回路の応用で、使えるマイクが出来ます。 ...
-
Qt はまってます。Mac でも書いたアプリがコンパイルできて、しっかり動くのを確認しました。このあいだ Chitubox が Qt 使ってるのを知ってうれしかったです。 Mac でもそのまま動くんですが、アプリのアイコンの設定はプラットフォーム依存です。 公式マニュアルでも設定...
-
ATtiny13A というマイクロコントローラICがあります。 このたびこいつを Arduino でどうにかプログラミングすることができたので経緯を記しておきます。すったもんだしたあげくいろいろなものを壊した気がします。というのは、ヒューズの設定で動いてくれなかったからです。...
