Rust Dieselでプリペーアドクエリを発行する

個人開発したアプリの宣伝
目的地が設定できる手帳のような使い心地のTODOアプリを公開しています。
Todo with Location

Todo with Location

  • Yoshiko Ichikawa
  • Productivity
  • Free

スポンサードリンク

ドキュメントには、

let users = sql_query("SELECT * FROM users WHERE id > ? AND name <> ?")
    .bind::<Integer, _>(1)
    .bind::<Text, _>("Tess")
    .get_results(&connection);

diesel::query_builder::SqlQuery - Rust

とあるけど、MySQLとPostgreSQLでプレースホルダー指定子が違うので注意(^_^;)


diesel/sql_query.rs at master · diesel-rs/diesel · GitHub

こちらのコメントにある通り、PostgreSQLには$1, $2, ...のように指定する。

use diesel::{RunQueryDsl, result::Error, sql_query, sql_types::Text};

pub fn fetch_team_by_account_id(conn: &DBConnection, account_id: &String) -> Result<Vec<Post>, Error> {
  sql_query( "select * from post where title = $1 ")
  .bind::<Text, _>(&title).get_results(conn.get())
}