oslo.db

作者: PPMac | 来源:发表于2017-08-31 10:27 被阅读183次

    官方文档 : https://docs.openstack.org/oslo.db/latest/

    oslo.db

    oslo.db处理库提供数据库连接到不同的后端数据库和各种其他程序的服务.它主要对SQLAlchemy做进一步封装使用.

    安装

    $ pip install oslo.db
    

    安装最新的SQL后端支持,诸如:

    $ pip install psycopg2
    $ pip install PyMySQL
    $ pip install pysqlite
    

    使用PostgreSQL:

    $ sudo apt-get install libpq-dev
    $ pip install psycopg2
    

    使用MySQL-python:
    PyMySQL是oslo.db以及整个OpenStack的默认MySQL DB API 驱动程序。但是你仍然可以使用MySQL-python作为替代DB API驱动程序。 对于MySQL-python, 你必须为你的发行版安装MySQL客户端开发包。 在Ubuntu上完成如下:

    $ sudo apt-get install libmysqlclient-dev
    $ pip install MySQL-python
    

    psycopg2用于PostgreSQL,你必须确保为psycopg2安装所需的系统包(PyMySQL是纯Python实现,因此不需要其他系统包)。对于Ubuntu / Debian,是python-dev和libpq-dev。对于Fedora / CentOS - gcc,是python-devel和postgresql-devel。还有一个单独的环境,用于测试MySQL-python。如果你想要运行这些测试,需要在Ubuntu / Debian上安装libmysqlclient-dev,在 Fedora / CentOS上安装mysql-devel 。
    oslo.db单元测试系统允许在实际数据库上运行单元测试。目前它支持MySQL,PostgreSQL和SQLite。为了在真正的数据库后端进行测试,您需要在localhost上设置openstack_citest的用户openstack_citest(某些OpenStack项目需要一个名为“openstack_citest”的数据库)。请注意,该用户必须拥有创建和删除数据库的权限。如果测试系统无法连接到后台,则会跳过测试系统。

    使用

    Session Handling

    from oslo_db.sqlalchemy import enginefacade
    
    
    class MyContext(object):
        "User-defined context class."
    
    
    def some_reader_api_function(context):
        #这里需要引入一个class
        with enginefacade.reader.using(context) as session:
            return session.query(SomeClass).all()
    
    
    def some_writer_api_function(context, x, y):
        with enginefacade.writer.using(context) as session:
            session.add(SomeClass(x, y))
    
    
    def run_some_database_calls():
        context = MyContext()
    
        results = some_reader_api_function(context)
        some_writer_api_function(context, 5, 10)
    

    注 facade:外观,假象

    相关文章

      网友评论

          本文标题:oslo.db

          本文链接:https://www.haomeiwen.com/subject/swytjxtx.html