Mojolicious数据库操作(十一)
一、quote
该方法在SQL语句中引用字符串的字面值:
my $escaped = $db->quote($str);
二、quote_id
在SQL语句中直接引用identify,也就是身份标识符,例如表名
my $escaped = $db->quote_id($id);
三、select
该方法是查询一个抽象方法:
my $results = $db->select($source, $fields, $where, $order); #我们下面举几个例子,请各位自己体会各个参数的意义: # "select foo as bar from some_table" $db->select('some_table', [[foo => 'bar']]); # "select foo, bar as baz, yada from some_table" $db->select('some_table', ['foo', [bar => 'baz'], 'yada']); # "select extract(epoch from foo) as foo, bar from some_table" $db->select('some_table', [\'extract(epoch from foo) as foo', 'bar']); # "select 'test' as foo, bar from some_table" $db->select('some_table', [\['? as foo', 'test'], 'bar']);
作为一个堵塞方法,和其他抽象方法一样也有非堵塞的方式:
$db->select(some_table => ['foo'] => sub { my ($db, $err, $results) = @_; ... }); Mojo::IOLoop->start unless Mojo::IOLoop->is_running;
四、select_p
和其他方法一样,这是select的异步方法:
my $promise = $db->select_p($source, $fields, $where, $order); $db->select_p(some_table => ['foo'] => {bar => 'yada'})->then(sub { my $results = shift; ... })->catch(sub { my $err = shift; ... })->wait;
五、update
该方法是更新数据的一个抽象方法:
my $results = $db->update($table, \%fieldvals, \%where); #fieldvals是散列键值对,键是字段名,值是要插入的值 #where是散列,对应SQL语句中的where
同样该方法也可以做非堵塞查询:
$db->update(some_table => {foo => 'baz'} => {foo => 'bar'} => sub { my ($db, $err, $results) = @_; ... }); Mojo::IOLoop->start unless Mojo::IOLoop->is_running;
六、update_p
update方法对应的异步方法:
my $promise = $db->update_p($table, \%fieldvals, \%where, \%options); $db->update_p(some_table => {foo => 'baz'} => {foo => 'bar'})->then(sub { my $results = shift; ... })->catch(sub { my $err = shift; ... })->wait;
七、table
该方法返回数据库中所有表名称一个数组引用:
my $tables = $db->tables;