欢迎投稿

今日深度:

使用sqlalchemy-gbasedbt连接GBase8s数据库的步骤详解,

使用sqlalchemy-gbasedbt连接GBase8s数据库的步骤详解,


目录
  • 1,确认安装python3
  • 2,安装GBase 8s数据库连接工具(CSDK)
  • 3,安装sqlalchemy-gbasedbt
    • 3.1, 在线安装sqlalchemy-gbasedbt
  • 4,编写测试Demo,执行测试

    测试环境:

    • 操作系统:CentOS 7.9 64-bit
    • 数据库版本:GBase8sV8.8_AEE_3.0.0_1,对应的CSDK版本为3.0.0_1

    1,确认安装python3

    确认已经安装python3和python3-devel

    [root@localhost test]# python3 -V
    Python 3.6.8

    如果没有安装,建议使用yum install python3来安装。
    升级pip的版本

    [root@localhost test]# python3 -m pip install --upgrade --force-reinstall pip
    WARNING: Running pip install with root privileges is generally not a good idea. Try `__main__.py install --user` instead.
    Collecting pip
      Downloading https://files.pythonhosted.org/packages/a4/6d/6463d49a933f547439d6b5b98b46af8742cc03ae83543e4d7688c2420f8b/pip-21.3.1-py3-none-any.whl (1.7MB)
        100% |████████████████████████████████| 1.7MB 235kB/s
    Installing collected packages: pip
    Successfully installed pip-21.3.1
    [root@localhost test]# pip3 list
    WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
    Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
    To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
    Package    Version
    ---------- -------
    pip        21.3.1
    setuptools 39.2.0

    2,安装GBase 8s数据库连接工具(CSDK)

    可以直接下载免安装版本的CSDK驱动:
    链接:https://pan.baidu.com/s/1s9EW3VoRznlj6uDHubIEtg?pwd=ejfb
    提取码:ejfb
    解压到指定目录/opt下,生成/opt/gbase8s-odbc-driver目录

    [root@localhost test]# ll
    总用量 35188
    -rw-r--r--. 1 root root 36029237 3月  11 20:52 GBase8s_3.0.0_1-Linux64-ODBC-Driver.tar.gz
    [root@localhost test]# tar -zxf GBase8s_3.0.0_1-Linux64-ODBC-Driver.tar.gz -C /opt/
    [root@localhost test]# cd /opt/
    [root@localhost opt]# ll
    总用量 4
    drwxr-xr-x. 20 gbasedbt gbasedbt 4096 3月  10 15:14 gbase
    drwxrwxr-x.  9     1001     1003   88 12月 13 2020 gbase8s-odbc-driver
    drwxr-xr-x.  2 root     root        6 10月 31 2018 rh

    创建必须的环境变量,并使环境生效

    export GBASEDBTDIR=/opt/gbase8s-odbc-driver
    export CSDK_HOME=/opt/gbase8s-odbc-driver
    export PATH=$GBASEDBTDIR/bin:$PATH
    export LD_LIBRARY_PATH=$GBASEDBTDIR/lib:$GBASEDBTDIR/lib/cli:$GBASEDBTDIR/lib/esql:$LD_LIBRARY_PATH

    创建sqlhosts配置文件

    [root@localhost test]# vi /opt/gbase8s-odbc-driver/etc/sqlhosts
    [root@localhost test]# more /opt/gbase8s-odbc-driver/etc/sqlhosts
    gbase01 onsoctcp a02.gbasedbt.com 9088

    3,安装sqlalchemy-gbasedbt

    3.1, 在线安装sqlalchemy-gbasedbt

    确认python3、python3-devel和gcc均已经安装,CSDK也已经安装以及环境变量已经配置的情况下,可直连网络的情况下,可使用pip3 install sqlalchemy-gbasedbt直接安装

    [root@localhost test]# pip3 install sqlalchemy-gbasedbt
    Collecting sqlalchemy-gbasedbt
      Using cached sqlalchemy_gbasedbt-0.2.4-py3-none-any.whl (10 kB)
    Collecting DbtPy
      Using cached DbtPy-3.0.5.4.tar.gz (162 kB)
      Preparing metadata (setup.py) ... done
    Requirement already satisfied: sqlalchemy in /usr/local/lib64/python3.6/site-packages (from sqlalchemy-gbasedbt) (1.4.46)
    Requirement already satisfied: greenlet!=0.4.17 in /usr/local/lib64/python3.6/site-packages (from sqlalchemy->sqlalchemy-gbasedbt) (2.0.2)
    Requirement already satisfied: importlib-metadata in /usr/local/lib/python3.6/site-packages (from sqlalchemy->sqlalchemy-gbasedbt) (4.8.3)
    Requirement already satisfied: typing-extensions>=3.6.4 in /usr/local/lib/python3.6/site-packages (from importlib-metadata->sqlalchemy->sqlalchemy-gbasedbt) (4.1.1)
    Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.6/site-packages (from importlib-metadata->sqlalchemy->sqlalchemy-gbasedbt) (3.6.0)
    Using legacy 'setup.py install' for DbtPy, since package 'wheel' is not installed.
    Installing collected packages: DbtPy, sqlalchemy-gbasedbt
        Running setup.py install for DbtPy ... done
    Successfully installed DbtPy-3.0.5.4 sqlalchemy-gbasedbt-0.2.4

    将同时安装依赖包:sqlalchemy、greenlet、importlib-metadata、typing-extensions、zipp和DbtPy,安装后的pip3列表如下:

    [root@localhost test]# pip3 list
    Package             Version
    ------------------- -------
    DbtPy               3.0.5.4
    greenlet            2.0.2
    importlib-metadata  4.8.3
    pip                 21.3.1
    setuptools          39.2.0
    SQLAlchemy          1.4.46
    sqlalchemy-gbasedbt 0.2.4
    typing_extensions   4.1.1
    zipp                3.6.0

    4,编写测试Demo,执行测试

    测试demo文件

    #!/usr/bin/env python3
    # Filename: testSqlalchemy_gbasedbt
    
    from sqlalchemy import MetaData, Table, Column, String, create_engine
    from sqlalchemy.dialects import registry
    from sqlalchemy.orm import sessionmaker
    from sqlalchemy.ext.declarative import declarative_base
    
    registry.register("gbasedbt", "sqlalchemy_gbasedbt.dbtdb", "GBasedbtDialect")
    
    # 创建对象的基类:
    Base = declarative_base()
    
    # 定义User对象:
    class User(Base):
        # 表的名字:
        __tablename__ = 'user'
    
        # 表的结构:
        id = Column(String(20), primary_key=True)
        name = Column(String(20))
    
    # 初始化数据库连接:
    # ConStr = 'gbasedbt://<username>:<password>@<host name>:<port number>/<databasename>;SERVER=<server name>'
    ConStr = 'gbasedbt://gbasedbt:GBase123@a02.gbasedbt.com:9088/testdb;SERVER=gbase01;DB_LOCALE=zh_CN.utf8;CLIENT_LOCALE=zh_CN.utf8;DELIMIDENT=y'
    engine = create_engine(ConStr)
    
    # 创建对象
    Base.metadata.create_all(engine)
    
    # 创建DBSession类型:
    DBSession = sessionmaker(bind=engine)
    
    # 创建session对象:
    session = DBSession()
    
    # 创建新User对象:
    new_user = User(id='2', name='测试用户')
    # 添加到session:
    session.add(new_user)
    # 提交即保存到数据库:
    session.commit()
    # 关闭session:
    session.close()
    
    # 创建Session:
    session = DBSession()
    # 创建Query查询,filter是where条件,最后调用one()返回唯一行,如果调用all()则返回所有行:
    user = session.query(User).filter(User.id=='2').one()
    # 打印类型和对象的name属性:
    print('type:', type(user))
    print('name:', user.name)
    # 关闭Session:
    session.close()

    测试结果:

    [root@localhost test]# ./testSqlalchemy_gbasedbt.py
    type: <class '__main__.User'>
    name: 测试用户

    到此这篇关于使用sqlalchemy-gbasedbt连接GBase 8s数据库的文章就介绍到这了,更多相关sqlalchemy-gbasedbt连接GBase 8s数据库内容请搜索PHP之友以前的文章或继续浏览下面的相关文章希望大家以后多多支持PHP之友!

    您可能感兴趣的文章:
    • Mybatis-Plus支持GBase8s分页查询的实现示例
    • GBase 8s数据库主键约束、唯一约束和唯一索引的区别解析
    • 浅析GBase8s 唯一索引与非唯一索引问题
    • Mybatis-plus支持Gbase8s分页的实现示例

    www.htsjk.Com true http://www.htsjk.com/shujukunews/46294.html NewsArticle 使用sqlalchemy-gbasedbt连接GBase8s数据库的步骤详解, 目录 1,确认安装python3 2,安装GBase 8s数据库连接工具(CSDK) 3,安装sqlalchemy-gbasedbt 3.1, 在线安装sqlalchemy-gbasedbt 4,编写测试Demo,执行...
    评论暂时关闭