如何使SQL查询循环?

时间:2019-04-24 13:52:48

标签: julia

我正在尝试使用MySQL pkg尝试获取多个查询的结果,所以我编写了一个循环:

db = connect_db()

variants_location = get_data_from_variant_file(variant_file)

query = MySQL.Stmt(db, """SELECT info
                          FROM hgmd_hg38_vcf
                          WHERE chrom = (?) AND pos = (?) AND ref = (?) AND alt = (?);""")

for loc in variants_location
    println(MySQL.execute!(query, loc))
end

以下是“ variants_location”变量的一个元素: SubString{String}["16", "2074320", "C", "A"]

有没有一种方法可以获取查询的执行结果?我尝试只打印它,但是它只返回一个数字。

1 个答案:

答案 0 :(得分:0)

根据文档,MySQL.jl似乎不支持用于选择数据的预编译SQL查询(只能使用INSERTDELETEUPDATE

您有以下选择:

  • 构建sql字符串,并使用上面建议的MySQL.Query(conn, sql) |> DataFrame模式。但是,这易于进行SQL注入,并且需要每次由数据库编译查询。
  • 使用INSERT将结果存储在临时表中,而不是使用上述模式获取结果-这有点难看
  • 通过PyCall.jlJDBC.jl库使用Python或Java驱动程序。这需要更多的配置,但是Python和Java MySQL驱动程序都支持预编译的语句。