如何从数据库(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
朱莉娅,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