如何从数据库(SQLite3)中获取一行到 Julia 的字符串中?

How to get a row from a database (SQLite3) into a string from Julia?

朱莉娅,SQLite3

嗨!我有一个 SQLite3 数据库,想从中获取信息到一个字符串中,不是 DataFrame。

# Connection to database
db = SQLite.DB(raw"pictures.sqlite")
# Creation of table
SQLite.execute(db, "DROP TABLE IF EXISTS Files")
SQLite.execute(db, "CREATE TABLE IF NOT EXISTS Files
                            (ID INTEGER PRIMARY KEY AUTOINCREMENT, 
                            FullName TEXT,
                            creation_date TEXT,
                            change_date TEXT,
                            size  INTEGER,
                            UNIQUE (ID))")
#Another code
#This is a way to add rows to database (it works)
DBInterface.execute(db, 
            "INSERT INTO Files (FullName, creation_date, change_date, size) 
            VALUES
            ('$fileName', '$cdate', '$mdate', '$fileSize')
        ")
#Then i am trying to get one row into a string
strq = SQLite.DBInterface.execute(db, "SELECT * FROM Files WHERE ID=3")
#I can't transfornm these to string

我正在 Julia 上写作,需要帮​​助!!

TLDR:

CSV.write(stdout, strq);

说明

API of SQLite.jl假设使用DBInterface.execute查询数据库。 此方法生成 SQLite.Query.

类型的对象

让我们看看我们能用它做什么:

julia> methodswith(SQLite.Query, supertypes=true)
[1] eltype(q::SQLite.Query) in SQLite at ~/.julia/packages/SQLite/wpQeE/src/tables.jl:51
[2] isempty(q::SQLite.Query) in SQLite at ~/.julia/packages/SQLite/wpQeE/src/tables.jl:15
[3] iterate(q::SQLite.Query) in SQLite at ~/.julia/packages/SQLite/wpQeE/src/tables.jl:94
[4] iterate(q::SQLite.Query, rownumber) in SQLite at ~/.julia/packages/SQLite/wpQeE/src/tables.jl:100

你可以看到一件重要的事情——你可以用 SQLite.Query 做任何你想做的事,只要它匹配 Tables.jl 接口。所以你没有义务使用 DataFrames 但没有“纯字符串”实现,这样的事情也没有任何意义。

但是,Tables 有很多接口。您需要的 CSV.jl 会准确地为您提供 SQL table.

之类的“字符串表示”

用你的代码试试这个(我在 table 中插入一行以查看结果):

julia> CSV.write(stdout, strq);
ID,FullName,creation_date,change_date,size
1,somefilename,somecdate,somemfate,0