Какой метод в lua (pgmoon) я могу использовать вместо cur: fetch ({}, "a") в lua (luasql)? - PullRequest
0 голосов
/ 05 июля 2019

Я хотел бы изменить конфигурацию соединения с базой данных в Lua.Сначала я использовал luasql для подключения к postgresql.Тогда я бы хотел перейти с luasql на pgmoon.В настоящее время я могу использовать pgmoon для подключения к postgresql.Я также могу запросить запись из базы данных.Но это всегда ошибка 500, когда я использую этот код.local row = cur:fetch ({}, "a") Я не уверен, что моя идея верна или нет.По моей идее, ошибка произошла из-за типа возвращаемого кода запроса к записи из базы данных.local cur = assert (con:execute(sql)) Когда я использую luasql, тип возвращаемого значения userdata.local cur = assert(pg:query(sql)) Но когда я использую pgmoon выше, тип возвращаемого значения - таблица.Так что это повлияло на весь другой логический код из-за одной строки кода.

Я попытался найти pgmoon.Но там очень мало документов и ресурсов.Я также попытался использовать некоторый код вместо local row = cur:fetch ({}, "a").Например: я использовал cjson.decode(variable).Но это формат, отличный от кода выше.

1- код Luasql

local driver = require "luasql.postgres"
local env = assert (driver.postgres())
local con = assert (env:connect(SOURCENAME, USERNAME, PASSWORD, HOSTNAME, PORT))
local cur = assert (con:execute())
local rows = {}
local row = cur:fetch ({}, "a")
if ((row == nil) or (row.username == nil)) then
...
end
cur:close()
con:close()
env:close()

return rows

2- код pgmoon

local pgmoon = require("pgmoon")
local pg     = pgmoon.new({
        host     = HOSTNAME,
        port     = PORT,
        database = SOURCENAME,
        user     = USERNAME,
        password = PASSWORD
})
assert(pg:connect())
local cur = assert(pg:query(sql))
local rows = {}

==> error start from here!!!!
...