Office 2013 / 2016 / 2019 ProPlus Retail零售版密钥上架

Python 连接 Oracle 自治数据库

Python

更新于:

0x00 前言

想做个分布式数据库,想到oracle的免费数据库,琢磨琢磨。

0x01 开整

根据自己使用的操作系统下载Instant client

https://www.oracle.com/database/technologies/instant-client/downloads.html

下面是我的系统环境下载连接
 

Linux 环境:
下载地址:https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
文件名:instantclient-basic-linux.x64-19.8.0.0.0dbru.zip

# 配置客户端路径变量
export LD_LIBRARY_PATH=~/instantclient_19_6
# 配置数据库参数变量方法1
export TNS_ADMIN=~/instantclient_19_6/network/admin/
# 配置数据库参数变量方法2,把数据库的参数文件放在~/instantclient_19_6/network/admin/

python连接数据库

import cx_Oracle

# 密码是在oracle网站下载数据库连接时设置的
# tns名称是在下载文件中的tnsnames.ora
connection = cx_Oracle.connect('admin', '密码', 'tns名称')
print('Database version:', connection.version)
connection.close()

flask-sqlalchemy连接数据库

# 安装oracle插件
# pip install cx_Oracle
# 同样需要设置客户端的变量
# export LD_LIBRARY_PATH=~/instantclient_19_6
# 格式为:oracle+cx_oracle://用户名:密码@tns
SQLALCHEMY_DATABASE_URI = 'oracle+cx_oracle://admin:password@db202001010000_high'
# 连接之后数据表在数据库ADMIN下

 

Windows环境:
下载地址:https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html
文件名:instantclient-basiclite-windows.x64-19.6.0.0.0dbru.zip

使用Navicat Premium连接

工具>选项>环境>oci环境,选择下载的压缩包解压路径,我的是:D:\Program Files\PremiumSoft\Navicat Data Modeler\instantclient_19_6\oci.dll

同样把网站下载的连接参数文件放到D:\Program Files\PremiumSoft\Navicat Data Modeler\instantclient_19_6\network\admin\

新建连接 > Oracle Cloud > Oracle Database Cloud service

连接类型:TNS

网络服务名:就是上述的tns名称

用户名:admin

密码:oracle网站配置的密码

0x02 报错

# sqlalchemy.exc.IntegrityError: (cx_Oracle.IntegrityError) ORA-01400: cannot insert NULL into ("ADMIN"."users"."ID")
# oracle数据库不支持自增长

# flask sqlalchemy ORA-02289: sequence does not exist
# 应该先新建sequence

create sequence id_seq
minvalue 1000
maxvalue 9999999999
start with 1001
increment by 1
cache 20;


# models.py
id = db.Column(db.Integer, Sequence('id_seq'), primary_key=True)

#cx_Oracle.DatabaseError) ORA-00942: table or view does not exist
# 删除migrate 和所有表,重新创建数据库
flask db init
flask db migrate
flask db upgrade

0xff 完结撒花

heroku + oracle数据库,是不是就可以不买服务器了。

转载请注明:【Python 连接 Oracle 自治数据库】https://jihuo.ma/python-oracle-autonomous-database.html

@楼主 昵称
评论