gpt4 book ai didi

julia - 如何在 Julia 中使用 LibPQ 插入记录?

转载 作者:行者123 更新时间:2023-12-01 01:39:31 25 4
gpt4 key购买 nike

目标:在 julia 中使用 LibPQ 创建记录并将其插入 postgres

代码:

using LibPQ, DataStreams, DataFrames;
host="localhost";
port="5432";
db="practice";
user="pdm";
pwd="pdm123";
ddq = "DROP TABLE IF EXISTS practice.language; CREATE TABLE IF NOT EXISTS practice.language (lang TEXT, web TEXT)";
conn = LibPQ.Connection("host=$host dbname=$db user=$user password=$pwd");
result = execute(conn, ddq);
langs = DataFrame(langv=["Julia","Go","Rust"], webv=["julialang.org", "golang.org", "www.rust-lang.org"]);
dmq = "INSERT INTO practice.language (lang, web) VALUES(\$1, \$2))";
Data.stream!(langs, LibPQ.Statement, conn, dmq);
close(conn);

观察:

表practice.language 已创建,但未插入记录。
practice=> select * from practice.language;
lang | web
------+-----
(0 rows)

错误日志:
ERROR: LoadError: MethodError: no method matching schema(::DataFrame)
Closest candidates are:
schema(::S, ::DataStreams.Data.Query{c,columns,e,limit,offset}) where {c, S, columns, e, limit, offset} at /opt/julia/julia-1.1.0/share/julia/stdlib/v1.1/packages/DataStreams/mEqAy/src/query.jl:217
schema(::S, ::DataStreams.Data.Query{c,columns,e,limit,offset}, ::Any) where {c, S, columns, e, limit, offset} at /opt/julia/julia-1.1.0/share/julia/stdlib/v1.1/packages/DataStreams/mEqAy/src/query.jl:217
schema(::Array{NamedTuple{names,T},1}) where {names, T} at /opt/julia/julia-1.1.0/share/julia/stdlib/v1.1/packages/DataStreams/mEqAy/src/namedtuples.jl:26
...
Stacktrace:
[1] #stream!#111(::Bool, ::Dict{Int64,Function}, ::Function, ::Array{Any,1}, ::Array{Any,1}, ::Nothing, ::Nothing, ::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::typeof(DataStreams.Data.stream!), ::DataFrame, ::Type{LibPQ.Statement}, ::LibPQ.Connection, ::Vararg{Any,N} where N) at /opt/julia/julia-1.1.0/share/julia/stdlib/v1.1/packages/DataStreams/mEqAy/src/query.jl:534
[2] stream!(::DataFrame, ::Type{LibPQ.Statement}, ::LibPQ.Connection, ::String) at /opt/julia/julia-1.1.0/share/julia/stdlib/v1.1/packages/DataStreams/mEqAy/src/query.jl:516
[3] top-level scope at none:0
[4] include at ./boot.jl:326 [inlined]
[5] include_relative(::Module, ::String) at ./loading.jl:1038
[6] include(::Module, ::String) at ./sysimg.jl:29
[7] include(::String) at ./client.jl:403
[8] top-level scope at none:0
in expression starting at /root/pgtest.jl:12

请指导解决上述问题!

最佳答案

使用 LibPQ.load! 怎么样?

LibPQ.load!(
(lang = langs.langv , web = langs.webv),
conn,
"INSERT INTO practice.language (lang, web) VALUES(\$1, \$2));"
)

始终记得提交(取决于您的配置,atocommit 可能已关闭)。
execute(conn, "COMMIT;")

关于julia - 如何在 Julia 中使用 LibPQ 插入记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59743493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com