Как сделать цикл запросов SQL? - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь использовать 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

Вот один элемент переменной "options_location": SubString{String}["16", "2074320", "C", "A"]

Есть ли способ получить результат выполнения моего запроса?Я попытался просто напечатать его, но он просто возвращает число.

1 Ответ

0 голосов
/ 25 апреля 2019

На основании документации кажется, что MySQL.jl не поддерживает предварительно скомпилированные SQL-запросы для выбора данных (вы можете использовать их только INSERT, DELETE, UPDATE)

Youиметь следующие параметры:

  • построить строку sql и использовать предложенный выше шаблон MySQL.Query(conn, sql) |> DataFrame.Это, однако, подвержено внедрению SQL и требует от базы данных компиляции каждый раз.
  • используйте INSERT, чтобы сохранить результаты во временной таблице, а затем получить их с помощью вышеуказанного шаблона - это несколько уродливо
  • использовать драйвер Python или Java с помощью PyCall.jl илиJDBC.jl библиотека.Это требует дополнительной настройки, но драйверы Python и MySQL поддерживают предварительно скомпилированные операторы.
...