我试图弄清楚在go的内置数据库/ sql包中使用命名参数的模式是什么.我查看了oracle驱动程序,但它似乎只是C库的包装器.让人们以优雅的方式解决这个问题吗?到目前为止,我刚刚解决该问题通过将工作{0},{1}作为单元测试的参数,但它肯定会是不错的能够正常使用他们作为map[string]interface{}什么的.有没有人有一个看似惯用的想法或实现?
供参考,这是一个测试:
db := testConn()
stmt, err := db.Prepare("return {0} as int1, {1} as int2")
if err != nil {
t.Fatal(err)
}
rows, err := stmt.Query(123, 456)
if err != nil {
t.Fatal(err)
}
rows.Next()
var test int
var test2 int
err = rows.Scan(&test, &test2)
if err != nil {
t.Fatal(err)
}
if test != 123 {
t.Fatal("test != 123;", test)
}
if test2 != 456 {
t.Fatal("test2 != 456;", test2)
}
Run Code Online (Sandbox Code Playgroud)
而我正在做的 …
我想列出我所参与的所有电影以及每部电影中演员的总和,但下面的查询只返回除了我之外的演员之和,并且不会返回没有其他演员的电影.
start me=node({0})
match me-[:ACTS_IN]->movie<-[:ACTS_IN]-otherActors
return movie, count(*) as actorSum
Run Code Online (Sandbox Code Playgroud) 如果我有 2 张表员工和部门
1)在服务器端加入数据
SELECT * FROM employee CROSS JOIN department;
Run Code Online (Sandbox Code Playgroud)
我们这里只使用一个连接来获取数据
2)要在客户端加入数据,我们将获取 2 个表并使用 2 个连接
SELECT * FROM employee;
Run Code Online (Sandbox Code Playgroud)
并将其存储在一个数组中
SELECT * FROM department;
Run Code Online (Sandbox Code Playgroud)
并将其存储在另一个数组中,并通过在客户端使用例如 Javascript 进行编程来合并这两个数组。
第二种方法可能更复杂,但优点是您可以将员工表存储在一个服务器上,将部门表存储在另一台服务器上,这样您可以减少自己服务器上的负载并使每台客户端机器完成其工作
但是我在问我是否要加入 2000 表哪个性能更好,速度更快:在客户端或服务器端进行连接?
我有一个用defrecord定义的数据类型,它包含两个向量:
(defrecord MyType [a b])
(def mytype (->MyType [1 2 3] [4 5 6]))
Run Code Online (Sandbox Code Playgroud)
我希望有一个函数更新两个向量并返回一个新的MyType.我能想到的唯一方法是通过嵌套的assoc调用:
(defn mutate-mytype [mytype x y]
(assoc mytype :a (assoc (:a mytype) x y)
:b (assoc (:b mytype) x y)))
Run Code Online (Sandbox Code Playgroud)
示例输出:
user=> (mutate-mytype mytype 1 7)
#user.MyType{:a [1 7 3], :b [4 7 6]}
Run Code Online (Sandbox Code Playgroud)
问题:有没有更好的方法来编写mutate-mytype方法?
如何将alts添加到Galleria图库,因为它默认不包含ALT标记.我正在使用设置为图库提供图像和经典主题.是否有人知道如何使其符合ADA规则.