使用sqlalchemy-gbasedbt連接GBase 8s數據庫的步驟詳解
測試環(huán)境:
- 操作系統: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.02,安裝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
創(chuàng)建必須的環(huán)境變量,并使環(huán)境生效
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
創(chuàng)建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也已經安裝以及環(huán)境變量已經配置的情況下,可直連網絡的情況下,可使用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,執(zhí)行測試
測試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")
# 創(chuàng)建對象的基類:
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)
# 創(chuàng)建對象
Base.metadata.create_all(engine)
# 創(chuàng)建DBSession類型:
DBSession = sessionmaker(bind=engine)
# 創(chuàng)建session對象:
session = DBSession()
# 創(chuàng)建新User對象:
new_user = User(id='2', name='測試用戶')
# 添加到session:
session.add(new_user)
# 提交即保存到數據庫:
session.commit()
# 關閉session:
session.close()
# 創(chuàng)建Session:
session = DBSession()
# 創(chuàng)建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數據庫內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Sql Server 和 Access 操作數據庫結構Sql語句小結
Sql Server 和 Access 操作數據庫結構Sql語句小結...2007-06-06

