Проблема с Sqlite Query - Как преобразовать код из SQLite v0.9.0 в v1.0.0 - PullRequest
2 голосов
/ 14 февраля 2020

ну, я плохо знаком с Джулией, и я просто играю вокруг. и, к сожалению, следующий код начинает выдавать ошибки. но в прошлом это работало просветите меня, в чем проблема, спасибо.

Я также пытался строчными буквами: query.

1 Ответ

3 голосов
/ 14 февраля 2020

Вот краткое MWE различий с использованием SQLLite (v0.9.0 против v1.0.0) с текущей версией Julia (1.3.1).

У вас нет таблицы, поэтому вам нужно ее создать first:

using SQLite
using DataFrames
db = SQLite.DB("db")
# v0.9.0
SQLite.Query(db,"CREATE TABLE d (col1 INT, col2 varchar2(100))")
# v1.0.0
DBInterface.execute(db,"CREATE TABLE d (col1 INT, col2 varchar2(100))")

Теперь вы можете проверить, выходит ли из таблицы:

julia> SQLite.tables(db) |> DataFrame
1×1 DataFrames.DataFrame
│ Row │ name    │
│     │ String⍰ │
├─────┼─────────┤
│ 1   │ d       │

Давайте вставим несколько строк (обратите внимание, как следует отделять данные из кода SQL с помощью предварительно скомпилированных операторов):

stmt = SQLite.Stmt(db, "INSERT INTO d (col1, col2) VALUES (?, ?)")
#v0.9.0
SQLite.execute!(stmt; values=(1, "Hello world"))
SQLite.execute!(stmt; values=(2, "Goodbye world"))
#v1.0.0
DBInterface.execute(stmt, (1, "Hello world"))
DBInterface.execute(stmt, (2, "Goodbye world"))

Теперь давайте получим данные

v0.9.0

julia> data = SQLite.Query(db,"SELECT * FROM d") |> DataFrame
3×2 DataFrame
│ Row │ col1   │ col2          │
│     │ Int64⍰ │ String⍰       │
├─────┼────────┼───────────────┤
│ 1   │ 1      │ Hello world   │
│ 2   │ 2      │ Goodbye world │

v1.0.0

julia> data = DBInterface.execute(db, "select * from d") |> DataFrame
3×2 DataFrame
│ Row │ col1   │ col2          │
│     │ Int64⍰ │ String⍰       │
├─────┼────────┼───────────────┤
│ 1   │ 1      │ Hello world   │
│ 2   │ 2      │ Goodbye world │
...