Mojolicious数据库操作(六)
一、属性之迁移与自动迁移
migrations与auto_migrate。首先将auto_migrate此属性的意义在于,设置后可以通过migrations属性自动的将数据库迁移至最新的schema(框架):
my $bool = $mysql->auto_migrate; #获取auto_migrate属性 $mysql = $mysql->auto_migrate($bool); #设置auto_migrate属性
migrations属性,可以设置Mojo::mysql::Migrations对象来轻松地改变数据库schema框架:
my $migrations = $mysql->migrations; $mysql = $mysql->migrations(Mojo::mysql::Migrations->new); #一个是读取、一个是设置
这个功能,我是没有看懂有啥优势在的。根据metacpan上的官方文档给出的那个例子,就是通过一个.sql扩展名的SQL脚本来对数据库进行更新:
# 从文件中载入迁移,使数据库更新到最新的框架: $mysql->migrations->from_file('/Users/sri/migrations.sql')->migrate;
总体而言,这两个属性是很鸡肋的。拿Flask的sqlalchemy对比,该模块是完全的ORM,数据结构与数据库表是一一映射的,当我们改变python的数据结构时,我们可以通过migrate来自动化的改变数据库,而无需重复的用SQL语句去修改数据库。但对于Mojo而言,本身就是与SQL语句强相关的,也没有映射数据结构,如果需要修改数据库,直接修改一遍数据库即可。所以,这个属性,我一次也没用过。。。
二、属性之database_class
这个属性是用来设置$mysql->db中的‘db’对象的。默认是Mojo::mysql::Database模块。db对象的所有操作方法均可参见此模块的metacpan文档。
这个属性存在的目的,在于你可以自己开发一个类似模块,然后封装更多的方法进去,方便调用。当然了,这个属性必须在db第一次被调用之前设置!
$class = $mysql->database_class; $mysql = $mysql->database_class("MyApp::Database");