我正在修改不是我自己编写的 Julia 代码。我在朱莉娅工作得很少。我连接了一个字符串来创建一个从数据库返回单个整数值的 SQL 查询。我想在下一个 sql 字符串中使用返回值。但是,从初始 SQL Select 语句返回的值是 1x1 数据帧。我的假设是我需要将返回值分配给可在后续 SQL 字符串中使用的整数变量。
import Dates
using ODBC
using Dataframes
dt = Dates.today()
db = ODBC.DSN("mydsn","myuser","mypasswd")
sqlstr = string("SELECT empid FROM employees WHERE name = ","'","John Doe","'"," AND startdate < ","'",dt,"'",")
relempid = ODBC.query(db, sqlstr)
Run Code Online (Sandbox Code Playgroud)
根据返回的 empid,我想运行额外的 SQL 查询,该查询将从数据库返回数据帧。
sqlstr2 = string("SELECT ticketId, shortdescription FROM tickets WHERE empid = ","'",relempid,"'",")
df = ODBC.query(db, sqlstr2)
ODBC.ODBCError("API.SQLExecDirect(stmt, query) failed; return code: -1 => SQL_ERROR
Run Code Online (Sandbox Code Playgroud)
但是,这会导致上述 SQL 错误,因为 relempid 本身就是一个 1x1 数据帧。
我确信这可能很简单,但我无法让它发挥作用。
我知道你有一个DataFrame
这样的情况:
julia> using DataFrames\n\njulia> df = DataFrame(a=111)\n1\xc3\x971 DataFrame\n Row \xe2\x94\x82 a\n \xe2\x94\x82 Int64\n\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n 1 \xe2\x94\x82 111\n
Run Code Online (Sandbox Code Playgroud)\n在这种情况下,只需注意DataFrames
s 可以像矩阵一样被索引:
julia> df[1,1]\n111\n
Run Code Online (Sandbox Code Playgroud)\n当然,您也可以通过列名称引用该值:
\njulia> df.a[1]\n111\n\njulia> df[1, :a]\n111\n
Run Code Online (Sandbox Code Playgroud)\n