Elixir Ecto:Postgresqlにバイナリデータを挿入する
1768 ワード
本稿では、データベースに保存する画像情報を例に、
まず、Postgresqlの唯一のバイナリデータのタイプは
次に例を示します
移行スクリプト
もちろん、Wordドキュメント、PDFドキュメントなど、画像ファイルのほかに、他のフォーマットのバイナリファイルを格納することもできます.
じっけんステップ を入力する. を含む. サンプルアドレス
https://github.com/developerw...
テスト時に任意のファイルを探してこの場所に置くことができます
Postgresql
にバイナリデータを挿入する方法を示す.まず、Postgresqlの唯一のバイナリデータのタイプは
bytea
であり、
または
を表すことを知る.OracleおよびMySQLのblob
に対応します.次に例を示します
defmodule Bytea.Model.Test do
import Ecto.Changeset
use Ecto.Schema
alias Bytea.Repo
schema "tests" do
field :photo, :binary
timestamps()
end
def changeset(struct, params \\ %{}) do
struct
|> cast(params, [:photo])
|> validate_required([:photo])
end
def insert(map) do
Map.merge(%__MODULE__{}, map) |> Repo.insert
end
def test_insert do
{:ok, contents} = File.read("/tmp/FB7D22A5-924E-4DA5-AC93-5D815FA1AEA8.png")
insert(%{photo: contents})
end
end
移行スクリプト
defmodule Bytea.Repo.Migrations.CreateTest do
use Ecto.Migration
def change do
create table(:tests) do
# :binary, mix ecto.migrate :photo :bytea
add :photo, :bytea
timestamps()
end
end
end
もちろん、Wordドキュメント、PDFドキュメントなど、画像ファイルのほかに、他のフォーマットのバイナリファイルを格納することもできます.
じっけんステップ
mix phoenix.new bytea --no-brunch
プロジェクトを作成し、ダウンロード依存を提示し、Y
mix compile
コンパイルプロジェクトvi config/dev.exs
データベースを構成し、デフォルトで生成されたユーザー名とパスワードはpostgres
なので、テスト時にあなたのデータベースのユーザー名とパスワードをpostgres
に設定するのは便利です.mix ecto.setup
データベースとテーブルを作成します.このコマンドは、実際にはmix.exs
で定義された別名で、複数のサブコマンドiex -S mix phoenix.server
起動テストhttps://github.com/developerw...
テスト時に任意のファイルを探してこの場所に置くことができます
"/tmp/FB7D22A5-924E-4DA5-AC93-5D815FA1AEA8.png"