author by:云开_sky
caravel原始的元数据库是使用的sqlite,用sqlite最大的一个问题就是时区的问题,她默认是格林威治时区比北京时间晚8个小时,用它的话很多地方都得通过localtime转换,还有就是比较“小众”性能与维护可能不是很fashion。此外需要注意的是caravel默认初始化数据库时是把sqlite库建到/tmp目录下,这样的话重启机器会导致数据丢失(希望引起大家的注意)。
如果使用sqlite的话,建议重新设置数据库安装目录,对sqlite数据库最好每隔一段时间进行备份(依据使用频率可以按天、按小时进行备份)
sqlite3 $caravel/caravel.db .dump > caravel_backup.sql
重新设置sqlite安装目录或者迁移到其他数据库上,caravel 0.11.0版可以通过修改配置文件/usr/local/lib/python3.5/dist-packages/caravel/config.py 或者在python环境变量下创建caravel_config.py指定
如下是修改的config.py配置文件(自定义caravel_config文件跟一个基本一样)
# the sqlalchemy connection string.
# sqlalchemy_database_uri = 'sqlite:////home/sky/caravel.db'
sqlalchemy_database_uri = 'mysql pymysql://sky:mypassword@localhost:3306/caravel?charset=utf8'
#mysql pymysql是为了兼容python2.7与python3,其实在使用caravel添加mysql数据源时也是这样写
# sqlalchemy_database_uri = 'postgresql://root:password@localhost/myapp'
本地如果创建好了caravel数据库的话,修改完配置文件,caravel元数据库就会切换到mysql了,只是我们需要把原来的sqlite的一些信息迁移过来。
迁移的话可以直接使用备份的caravel_back.sql,逐个执行里面的语句。注意caravel原始sqlite库里的表,每个都有主键id是自增的,所以迁移到mysql之后,也需要把id都设置成自增。
caravel元数据库主要有以下这些表:
阅读(3398) | 评论(0) | 转发(0) |