Pandasのread_sqlにパラメータを付ける
質問
PandasでSQLクエリでパラメータを渡す例はありますか?
特に、私はPostgreSQLデータベースに接続するためにSQLAlchemyエンジンを使用しています。 今のところ、以下のようにするとうまくいくことがわかりました。
df = psql.read_sql(('select "Timestamp","Value" from "MyTable" '
'where "Timestamp" BETWEEN %s AND %s'),
db,params=[datetime(2014,6,24,16,0),datetime(2014,6,24,17,0)],
index_col=['Timestamp'])
Pandasのドキュメントによると、paramsはdictとして渡すこともできるようですが、例えば試してみたところ、これがうまくいかないようです。
df = psql.read_sql(('select "Timestamp","Value" from "MyTable" '
'where "Timestamp" BETWEEN :dstart AND :dfinish'),
db,params={"dstart":datetime(2014,6,24,16,0),"dfinish":datetime(2014,6,24,17,0)},
index_col=['Timestamp'])
Pandasからこのような種類のクエリを実行するには、どのような方法が推奨されますか?
どのように解決するのですか?
この
read_sql
docs にはこうあります。
params
の引数はリスト、タプル、またはディクショナリーである (
docs
).
SQLクエリに値を渡すには、異なる構文が可能です。
?
,
:1
,
:name
,
%s
,
%(name)s
(参照
PEP249
).
しかし、これらの可能性のすべてが、すべてのデータベースドライバによってサポートされているわけではありません。
どの構文がサポートされているかは、使用しているドライバに依存します。
(
psycopg2
を使用するドライバに依存します。)
あなたの2番目のケースでは、dictを使う場合、「名前付き引数」を使っていることになり、それによると
psycopg2
のドキュメントによると、これらは
%(name)s
のスタイルをサポートしています (そのため
:name
でしょう)、以下を参照してください。
http://initd.org/psycopg/docs/usage.html#query-parameters
.
というわけで、このスタイルを使えばうまくいくはずです。
df = psql.read_sql(('select "Timestamp","Value" from "MyTable" '
'where "Timestamp" BETWEEN %(dstart)s AND %(dfinish)s'),
db,params={"dstart":datetime(2014,6,24,16,0),"dfinish":datetime(2014,6,24,17,0)},
index_col=['Timestamp'])
関連
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] Pandasのカラム名のリネーム
-
[解決済み] Pandas DataFrameからカラムを削除する
-
[解決済み] Pandasのデータフレームで複数の列を選択する
-
[解決済み] Pandas DataFrameの行数を取得する方法は?
-
[解決済み] pandasを使った "大量データ "ワークフロー【終了しました
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
-
[解決済み】Pandas DataFrameのカラムヘッダからリストを取得する。
-
[解決済み】PandasでSettingWithCopyWarningに対処する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 古いバージョンのPythonにおける辞書のキーの並び順
-
[解決済み] スペースがないテキストを単語のリストに分割する方法
-
[解決済み] pandasのタイムゾーンに対応したDateTimeIndexを、特定のタイムゾーンに対応したナイーブなタイムスタンプに変換する。
-
[解決済み] Django で全てのリクエストヘッダを取得するにはどうすれば良いですか?
-
[解決済み] Pandasのデータフレーム内の文字列を'date'データ型に変換するにはどうしたらいいですか?
-
[解決済み] Python Empty Generator 関数
-
[解決済み] Pythonで、ウェブサイトが404か200かを確認するためにurllibをどのように使用しますか?
-
[解決済み] Pythonの検索パスを他のソースに展開する
-
[解決済み] virtualenvsはどこに作成するのですか?
-
[解決済み] Pythonでランダムなファイル名を生成する最良の方法