gpt4 book ai didi

带有自动列的 Postgresql 准备语句

转载 作者:行者123 更新时间:2023-11-29 13:41:22 26 4
gpt4 key购买 nike

尝试将准备好的语句与 python 的 psypcop2 一起用于插入需要手动设置。但是使用带有自动列(例如序列号或时间戳)的准备好的语句会导致错误。

直接通过psql运行sql语句:

create table ps_test(
id serial primary key,
data text );

prepare pstmt (text) as insert into ps_test values( $1 );

execute pstmt( 'abc' );
execute pstmt( 'def' );

deallocate pstmt;
select * from ps_test;

给出“错误:列“id”是整数类型,但表达式是文本类型”。

重写表,使自动列最后定义:

drop table ps_test;
create table ps_test (
data text,
id serial primary key
);

prepare pstmt (text) as insert into ps_test values( $1 );

execute pstmt( 'abc' );
execute pstmt( 'def' );

deallocate pstmt;
select * from ps_test;

有效。

 data | id 
------+----
abc | 1
def | 2
(2 rows)

有没有更好的办法?

最佳答案

对于标准 SQL,您将使用

INSERT INTO ps_test (data) VALUES ( $1 )

$1 插入到 data 列中。注意 INSERT statement syntax允许在 table_nameps_test 之后的括号中指定 column_namedata

因此,您准备好的声明将是

PREPARE pstmt (text) AS INSERT INTO ps_test (data) VALUES ( $1 );

关于带有自动列的 Postgresql 准备语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54856514/

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