我正在为数据库创建服务层,因此我正在创建函数来执行某些操作。其中一些是简单的异步插入。但是,它们有大量的参数。
我正在使用scrapy来蜘蛛数据,我使用scrapy的item
概念,它有一个类似于python dict的api。我不想参数化存储过程签名/存储过程调用构造或插入语句中的所有字段。
请注意,复合类型在开始时被声明了两次。第一个create table
在 postgres 的语句中,第二个在 scrapy 中使用 item 接口。所以 :
什么是使用 pyscopg2 将类似 dict 的实体放入 postgres 的最简洁方法,而无需进行参数化,同时又是未来的证明(即,没有位置参数化)。
我在想tablename%ROWTYPE
应该声明为存储过程输入参数,但是当我创建执行查询字符串时,如何映射类似 python 的对象?我认为与psycopg2 中的复合类型外壳有关。但是我无法从文档中看到完整的图片。
为了争论,让我们考虑一个CREATE TABLE( name character varying, id integer primary key)
具有相应scrapy类型的用户表,并且主ID在域中隐式地唯一。任何关于插入如何看起来像默认值和 pkey 序列化程序的评论也将有所帮助:D
我可以使用Sql Adaption Protocol使用通用例程对 scrapy 项目进行子类化,以将 scrapy 项目转换为 postgres 复合类型吗?这会是明智的吗?