lua-pgsql
is a PostgreSQL client for Lua. It is compatible with Lua 5.2.3(or above) and based on the PostgreSQL C API.
install Lua from repo and then
make
or use the environment variable LUADIR
to specify the Lua source you want to use
LUADIR=/path/to/lua make
First you need to use pgsql = require('luapgsql')
to import a table named pgsql
(or any other valid name).
-
client, errmsg = pgsql.newclient(dbarg)
- Attempts to establish a connection to a PostgreSQL server specified by
dbarg
. If successfully executed, a valid PostgreSQL clientclient
, plus anil
forerrmsg
, are returned; otherwiseclient
will benil
and an error messageerrmsg
is returned. Seeluapgsql-demo.lua
for more details aboutdbarg
.
- Attempts to establish a connection to a PostgreSQL server specified by
-
errmsg = client:ping()
- Checks whether the connection to the server is working. If the connection has gone down and auto-reconnect is enabled an attempt to reconnect is made. If the connection is down and auto-reconnect is disabled, an error message
errmsg
is returned.
- Checks whether the connection to the server is working. If the connection has gone down and auto-reconnect is enabled an attempt to reconnect is made. If the connection is down and auto-reconnect is disabled, an error message
-
errmsg = client:setcharset(charset)
- Sets the default character set to be
charset
for the current connection.nil
is returned if successfully executed, otherwise an error messageerrmsg
is returned.
- Sets the default character set to be
-
result, errmsg = client:execute(sqlstr)
- Executes a SQL statement
sqlstr
. If successfully executed, aresult
containing all information, and anil
forerrmsg
, are returned; otherwise theresult
will benil
, and the error messageerrmsg
tells what happened.
- Executes a SQL statement
-
size = result:size()
- Returns the number of record(s) in the
result
.nil
is returned if error occurs.
- Returns the number of record(s) in the
-
fieldnamelist = result:fieldnamelist()
- Returns the fieldname list for the
result
.nil
is returned if error occurs.
- Returns the fieldname list for the
-
result:recordlist()
- Returns an iteration closure function which can be used in the
for ... in
form.nil
is returned if error occurs. Each record returned by the iterator function is an array containing values corresponding to the fieldname list which is the result ofresult:fieldnamelist()
.
- Returns an iteration closure function which can be used in the
See luapgsql-demo.lua
for more details.
lua-pgsql
can also be integrated with C/C++ programs for executing Lua scripts. See host.c
for how to import it into C/C++ environment.
-
If you try to run
luapgsql-demo.lua
with the following command:$ lua luapgsql-demo.lua
but encounter an error message like this:
lua dynamic libraries not enabled; check your Lua installation
which means you need to re-compile Lua with extra arguments to enable loading dynamic libraries. For example, in Linux systems:
$ make posix MYCFLAGS="-DLUA_USE_DLOPEN -fPIC" MYLIBS=-ldl
-
If there is an error message like this:
multiple Lua VMs detected
you may re-compile the Lua interpreter with option
-Wl,-E
.
Have fun!