2014-09-30 26 views
0

Clojure的新手。Clojure - 如何建立一个数据结构,可能增量

我想建立一个数据结构编程插入到数据库中。我实际上有一些工作得很好,但是它为每条记录都插入一个插入,并且我想生成整个记录,然后用一个插入一次插入整个事物。

这是我迄今为止的工作:

(doseq [record-data1 [:one :two :three] 
    (doseq [record-data2 [1 2 3]] 
     (insert {record-data1 record-data2}) 

如何插入之前,首先生成整个大宗结构有什么建议?尝试过地图,步行等变化,但还没有能够提出任何事情。

谢谢。

+0

你的问题不清楚。你想让“整个散装结构”看起来像什么? – 2014-09-30 19:09:41

+0

哎呦,你是对的。像这样:({:one 1} {:one 2} {:one 3} {:two 1} ...) – user1992634 2014-09-30 20:18:09

+0

如果您需要添加两个集合的每个组合,我会关心数据库设计。应该把表格分解成两个? – Thumbnail 2014-10-01 10:27:59

回答

1

我不知道我明白你的意思是“整个散装结构”。您不能将record-data1和record-data2的交叉产品放在同一个字典中。也许你正在寻找:

user=> (for [record-data1 [:a :b :c] record-data2 [1 2 3]] {record-data1 record-data2}) 
({:a 1} {:a 2} {:a 3} {:b 1} {:b 2} {:b 3} {:c 1} {:c 2} {:c 3}) 
+0

我认为这正是我正在寻找的 - 谢谢。学习一种新语言的挑战之一就是简单地学习标准库中所有可能的功能。点是,我不知道“为”存在。 – user1992634 2014-09-30 20:19:39

+0

您还可以在'doseq'上使用额外的绑定来获得'for'所具有的相同扩展行为(尽管在这种情况下,您不希望因为您想要单个插入语句)。 – noisesmith 2014-09-30 20:34:44