更新于:
想做个分布式数据库,想到oracle的免费数据库,琢磨琢磨。
根据自己使用的操作系统下载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网站配置的密码
# 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
heroku + oracle数据库,是不是就可以不买服务器了。
转载请注明:【Python 连接 Oracle 自治数据库】https://jihuo.ma/python-oracle-autonomous-database.html