グーグル検索みたいにスペース区切りで複数の単語を検索条件にしたい

ワードは可変個(いくつかわからない)

やり方を探したが見つからなかったので適当に実装してみた

#検索条件を" "(半角スペース)、" "(全角スペース)、"	"(タブ)で区切る
conds = condition.replace(" "," ").split()
makecond = []
#条件未入力で検索した場合全件検索
makecond.append({"TEXT": {"$regex":"", "$options": "i"}}) 
for c in conds:
    #検索条件の生成
    makecond.append({"TEXT": {"$regex":c, "$options": "i"}})
# 検索最大値
max_count = getIniFile_I("MAX_CNT")
#生成した検索条件で検索
r_data = [d for d in co.find({'$and': makecond}).limit(max_count)]

こんな感じでなんとなく動いた

万歳

デバッグ方法

import pdb; pdb.set_trace()

これでここから対話式にデバッグができる

 

ネストしたfor文でpymongo.cursor.Cursorを使って悩んだ話

クローラがURLのリストに除外文字列があるかどうかチェックする処理

除外文字列はmongodbのコレクションから取得

for link_url in links:
    isFind = False
    for ignore in ignoreList:
        if link_url.find(ignore["WORD"]) >= 0:
        break

URL毎に除外リストの先頭からチェックする動作を期待したが、breakすると除外リストの続きから実行される

pymongo.cursor.Cursorの仕様のようだが感覚的にはjavaiteratorな感じ

rewind()でカーソルの先頭に戻るようだ

頑張って探したけどbreakしたときの動作についてはよくわからん

MySQL

OracleのNVLはMySQLではIFNULL


やりたいこと

load data infileでインサートしたときにインサートに使用した複数カラムのハッシュ値を主キーにしたい

そのものずばりの書き方が見つからなかったので適当にやってみた

load data infile 'FILE_PATH'
replace into table TABLE_NAME
ignore 1 lines
set HASH = MD5(concat(COL1, COL2, COL3, ifnull(COL4, '')));

希望通りのことができた

load data infileの後にset~で次の項目に任意の値を入れることができるようだ

この時は計算式や関数も使えるのでMD5もできた

php mysql xampp

LOAD DATA LOCAL INFILE

そこそこのテキストを一括importしたくていろいろ試したがxampp上でだけなぜかエラーになる

General error: 2000 LOAD DATA LOCAL INFILE is forbidden, check mysqli.allow_local_infile

いろいろ探したらどこかの誰かがこんな事言ってた

Easiest solution, that may work on some servers is to remove LOCAL like:

Original:LOAD DATA LOCAL INFILE New/ It should be: LOAD DATA INFILE

Strange, but I have found this solution to work on my local machine, with xampp but it did not work on a live server with CentOS, so I'd to revert the code back and add 'LOCAL'.

 のでLOCALを外したら動いた

https://stackoverflow.com/questions/7638090/load-data-local-infile-forbidden-in-php

android java

postではまる

まず、最近のandroidhttpsでないと通信できない

これまで使われてたHttpClientも使えない

 

現在 postしたデータがphpで見れない(なぜかarrayが空)

パケット見ようとしたらsで見れない…

 

postデータを見れるようにapacheの設定変更

httpd.conf

変更
LoadModule dumpio_module modules/mod_dumpio.so

LogLevel warn dumpio:trace7

追記
DumpIOInput On
DumpIOOutput On

 

--7a225ffa-cedb-4d97-a0b3-294e34f99326\r\nContent-Disposition: form-data; name="userfile"; filename="20191209.txt"\r\nContent-Type: text/plain\r\n\r\n~略~\r\n--7a225ffa-cedb-4d97-a0b3-294e34f99326--\r\n

データは送られてるのに

Array\n(\n)\n

中身が見れない

なんでだろ

python

mongodb

 

こんな値

1575354984.412788

DB上は一応浮動小数点として扱われているようだ

ブラウザに渡してからPOSTして受け取った際にstringに変わっていた

見た目が同じなので全く気付かない

受け取ったときに忘れずキャストしよう

float(request.form['val'])

Robo3Tはなぜか丸めて表示されるので要注意