我想从F#查询更新MySQL表。基本上,我现在可以将MySql表导入到F#矩阵中。我正在通过F#对这个矩阵进行一些计算,在计算之后,我想用获得的新值更新主要的MySQL表。例如,让我们以一个来自MySQL表的简单矩阵为例:
let m = matrix [[1.;2.;3.];[1.;1.;3.];[3.;3.;3.]]现在我想设计一个更新mySQL表的查询。
let query() =
seq { use conn = new SqlConnection(connString)
do conn.Open()
use comm = new SqlCommand("UPDATE MyTAble SET ID = "the first column of the matrix",
conn)
}我需要将矩阵转换成序列吗?对于这次迭代更新,我是否需要使用T-SQL (我是通过阅读其他答案找到这种方式的?
发布于 2011-10-15 02:16:53
没有内置的功能可以更容易地更新数据库中的F# matrix,因此您必须自己编写更新。我认为最好的方法是使用for遍历矩阵,如果值发生了变化,则运行update命令。类似于:
let m1 = matrix [[1.;0.]; [0.;2.]] // The original value from DB
let m2 = m1 + m1 // New updated matrix
for i in 0 .. (fst m1.Dimensions) - 1 do
for j in 0 .. (snd m1.Dimensions) - 1 do
if m1.[i, j] <> m2.[i, j] then
// Here you need to do the actual update
printfn "SET %d, %d = %f" i j m2.[i, j]您的函数已经展示了如何运行单个UPDATE命令-只需注意,如果不返回一系列结果(在这里,您只想执行一些操作),则不需要将其包装在seq { .. }中。
如果更改的值很多,那么使用一些批量更新功能可能会很有用(这样您就不会运行太多可能很慢的SQL命令),但我不确定MySQL是否有类似的功能。
https://stackoverflow.com/questions/7771560
复制相似问题