如何断开 Postgrex 连接?
How to disconnect Postgrex connection?
我正在尝试弄清楚如何连接到 postgres 数据库,运行 查询,然后断开连接。
查看Postgrex,我使用
建立连接
{:ok, pid} = Postgrex.start_link(hostname: "localhost", username: "postgres", password: "postgres", database: "postgres")
然后我使用
执行我的查询
Postgrex.query!(pid, "SELECT user_id, text FROM comments", [])
但是,我该如何断开连接?
我想断开连接,因为我正在遍历 N 个数据库并且运行对所有这些数据库执行相同的查询。
我尝试退出流程,例如Process.exit(pid, :bye)
,但它也终止了生成过程,因为它是从 start_link/3
开始的。我在 Postgrex
.
中找不到 start/3
函数
由于 Postgrex.start_link
返回的 pid
是 GenServer
,您可以使用 GenServer.stop/1
:
iex(1)> {:ok, pid} = Postgrex.start_link(hostname: "localhost", username: "postgres", password: "postgres", database: "postgres")
{:ok, #PID<0.277.0>}
iex(2)> GenServer.stop(pid)
:ok
iex(3)> GenServer.stop(pid)
** (exit) no process: the process is not alive or there's no process currently associated with the given name, possibly because its application isn't started
(stdlib) proc_lib.erl:797: :proc_lib.stop/3
我正在尝试弄清楚如何连接到 postgres 数据库,运行 查询,然后断开连接。
查看Postgrex,我使用
建立连接{:ok, pid} = Postgrex.start_link(hostname: "localhost", username: "postgres", password: "postgres", database: "postgres")
然后我使用
执行我的查询Postgrex.query!(pid, "SELECT user_id, text FROM comments", [])
但是,我该如何断开连接?
我想断开连接,因为我正在遍历 N 个数据库并且运行对所有这些数据库执行相同的查询。
我尝试退出流程,例如Process.exit(pid, :bye)
,但它也终止了生成过程,因为它是从 start_link/3
开始的。我在 Postgrex
.
start/3
函数
由于 Postgrex.start_link
返回的 pid
是 GenServer
,您可以使用 GenServer.stop/1
:
iex(1)> {:ok, pid} = Postgrex.start_link(hostname: "localhost", username: "postgres", password: "postgres", database: "postgres")
{:ok, #PID<0.277.0>}
iex(2)> GenServer.stop(pid)
:ok
iex(3)> GenServer.stop(pid)
** (exit) no process: the process is not alive or there's no process currently associated with the given name, possibly because its application isn't started
(stdlib) proc_lib.erl:797: :proc_lib.stop/3