初めまして、こんにちは

sqlaichemyとpandas.read_sql_queryにてmysqlのlike機能で  
日本語のキーワードを選択したいですが、どうやって動けますか？

英語のキーワードを下記のように選択すると、動けるんですが

```

    statement = "SELECT * FROM orderitem WHERE item_description like '%example%'"
    df = pd.read_sql_query(text(statement), engine)
    
```

日本語のキーワードを使うと、エラーが出てます。

```

    statement = "SELECT * FROM orderitem WHERE item_description like '%日本語%'"
    df = pd.read_sql_query(text(statement), engine)
    
```

エラー：

```

    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 55: ordinal not in range(128)
    
```

ps- このquery "SELECT * FROM orderitem WHERE item_description like '%日本語%'"
はterminalで動けるんですが、python で作業するとエラーが出てしまいます。

私のコード：

```

    import pymysql
    import os
    import pandas as pd
    from sqlalchemy import create_engine, text
    
    db = pymysql.connect(db=db, user='root', passwd=passwd, charset='utf8', unix_socket="/var/run/mysqld/mysqld.sock", local_infile=True)
    cursor = db.cursor()
    cursor.execute("SET NAMES utf8")
    engine = create_engine('mysql+pymysql://root:passwd@localhost:4406/db?charset=utf8')
    
    statement = "SELECT * FROM orderitem WHERE item_description like '%日本語%'"
    df = pd.read_sql_query(text(statement), engine)
    
```

色々調べたんですenginer とconnetionの方でencoding = utf-8を追加してもうまく解決できません..

よければ教えていただけると嬉しいです。  
ありがとうございます。
CC BY-SA 3.0
2017-05-24T13:47:36.927
34989
2019-04-11T01:38:50.817
2019-04-11T01:38:50.817
754
14629
question
python pandas 日本語 sqlalchemy
python SQLAlchemy & pandas read_sql_query 日本語の処理について
もしかして利用されてるPythonのバージョンは2系ですか？ もしそうなのであれば、SQL文をUnicode文字列で書いてみてください。

```

    # ダブルクォーテションの前に「u」をつける
    statement = u"SELECT * FROM orderitem WHERE item_description like '%日本語%'"
    
```

あと `read_sql_query` は 文字列でも多分大丈夫です。(textと、どちらが良いのかはわかっていませんが。)

```

    statement = u"SELECT * FROM orderitem WHERE item_description like '%日本語%'"
    # text 関数を使わずに直接文字列を渡す
    df = pd.read_sql_query(statement, engine)
    
```

<http://pandas.pydata.org/pandas-
docs/version/0.18.1/generated/pandas.read_sql_query.html>
CC BY-SA 3.0
2017-05-24T15:47:25.200
34993
2017-05-24T15:47:25.200
2168
34989
answer
結局tell kのコメントに参考し

```

    #ダブルクォーテションの前に「u」をつける
    statement = u"SELECT * FROM orderitem WHERE item_description like '%日本語%'"
    
```

で解決しました！

私のpython は2.7で、コードは以下になります。

```

    import pymysql
    import os
    import pandas as pd
    from sqlalchemy import create_engine, text
    
    db = pymysql.connect(db=db, user='root', passwd=passwd, charset='utf8', 
    unix_socket="/var/run/mysqld/mysqld.sock", local_infile=True)
    cursor = db.cursor()
    cursor.execute("SET NAMES utf8")
    engine = create_engine('mysql+pymysql://root:passwd@localhost:4406/db?charset=utf8')
    
    statement = "SELECT * FROM orderitem WHERE item_description like '%日本語%'"
    df = pd.read_sql_query(text(statement), engine)
    
```
CC BY-SA 3.0
2017-05-24T16:34:58.270
34994
2017-05-24T16:34:58.270
14629
34989
answer