Use liquibase with python. Java integration is done using Java Native Interface (JNI) using pyjnius
MySQL, Postgresql, Bigquery, Redshift JDBC Drivers included.
install:
pip install pyliquibase
install from github:
pip install https://github.com/memiiso/pyliquibase/archive/master.zip --upgrade --user
using command line:
pyliquibase --defaultsFile=changelogs/liquibase.properties status
pyliquibase --defaultsFile=changelogs/liquibase.properties validate
pyliquibase --defaultsFile=changelogs/liquibase.properties updateSQL
pyliquibase --defaultsFile=changelogs/liquibase.properties update
using python:
from pyliquibase import Pyliquibase
if __name__ == '__main__':
liquibase = Pyliquibase(defaultsFile="changelogs/liquibase.properties", logLevel="INFO")
# call execute with arguments
liquibase.execute("status")
liquibase.execute("rollback", "MyTag")
# or
liquibase.validate()
liquibase.status()
liquibase.updateSQL()
liquibase.update()
liquibase.rollback("MyTag")
Python library is using LiquibaseCommandLine
reflection class which uses/equivalent LiquibaseCommandLine
java class.
liquibase calls are executed by LiquibaseCommandLine.execute(liquibaseargs)
method by passing given python arguments to java class.
python java integration class using pyjnius(using the Java Native Interface (JNI))
class LiquibaseCommandLine(JavaClass, metaclass=MetaJavaClass):
__javaclass__ = 'liquibase/integration/commandline/LiquibaseCommandLine'
# methods
execute = JavaMethod('([Ljava/lang/String;)I')
LIQUIBASE is a registered trademark of Liquibase , INC.