IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python使用flask框架ORM操作mysql oracle -> 正文阅读

[Python知识库]python使用flask框架ORM操作mysql oracle

本文章记录着python使用flask ORM 连接mysql oracle 数据库 的方法

示例一:python调用flask框架

import os
import sys

from flask import Flask
from flask_script import Command, Manager
app = Flask(__name__)


class Print(Command):
    """
    只是测试输出的内容
    """
    def run(self):
        print("hello")


if __name__ == "__main__":
    """
    使用方法: 
    只是输出: python demo.py print
    """
    manager = Manager(app)
    manager.add_command("print", Print())
    manager.run()

调用方法

python demo.py print

输出

hello

示例二:python调用flask连接MySQL

import os
import sys

# sys.path.append(os.path.realpath("../"))
# sys.path.append("/Users/mac/Documents/www_python/wannet/applications")

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_script import Command, Manager


app = Flask(__name__)

# 配置数据库连接方法一: 单库
# MySQL 连接
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:root@localhost/wannet'
# Oracle 连接
# app.config['SQLALCHEMY_DATABASE_URI'] = "oracle+cx_oracle://dev:dev@localhost:1521/helowin"

# 额外配置
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)


class Print(Command):
    """
    只是测试输出的内容
    """
    def run(self):
        print("hello")


class User(db.Model):
    """
    MySQL Model
    """
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True, comment="ID")
    username = db.Column(db.String(50), comment="username")
    password = db.Column(db.String(50), comment="password")
    email = db.Column(db.String(50), comment="邮箱")
    def __str__(self):
        return self.username


# 1. 方法一: 类的继承
class AddUser(Command):
    # 添加注释,标明使用功能
    """添加用户"""
    def run(self):
        u = User(username="fentiao90009", password="fentiao", email="fentiao@qq.com")
        db.session.add(u)
        db.session.commit()
        print("正在添加用户%s........" % u.username)
        # select

        userList = User.query.all()
        for item in userList:
            print(item)

        return True


if __name__ == "__main__":
    """
    使用方法: 
    只是输出: python demo.py print
    MySQL数据库中添加数据: python demo.py adduser
    """
    manager = Manager(app)
    manager.add_command("print", Print())
    manager.add_command("adduser", AddUser())
    manager.run()

示例三:oracle连接需要指定instant_client

# 1. 初始化 Oracle instantclient
        import cx_Oracle
        # instantclient_lib = "/Users/mac/Documents/www_python/wannet/instantclient_basic/mac"
        if "darwin" in sys.platform.lower():
            instantclient_lib = os.path.join(os.path.abspath("../"), "instantclient_basic/mac")
        elif "win" in sys.platform.lower():
            instantclient_lib = os.path.join(os.path.abspath("../"), "instantclient_basic/win")
        else:
            instantclient_lib = os.path.join(os.path.abspath("../"), "instantclient_basic/linux")
        cx_Oracle.init_oracle_client(lib_dir=instantclient_lib)

oracle需要下载 instant_client

instant_client 目录结构

在这里插入图片描述

zip原始文件来源地址: https://www.oracle.com/cn/database/technologies/instant-client.html

示例四: mysql oracle 共存(多库连接)

import os
import sys

# sys.path.append(os.path.realpath("../"))
# sys.path.append("/Users/mac/Documents/www_python/wannet/applications")

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_script import Command, Manager


def get_conn_str(bind):
    """
    初始化连接
    @:param bind 取值  mysql oracle
    :return:
    """
    conn_str = ""
    if bind.lower() == "mysql":
        conn_str = "mysql+pymysql://root:root@localhost/wannet"
    elif bind.lower() == "oracle":
        # 1. 初始化 Oracle instantclient
        import cx_Oracle
        # instantclient_lib = "/Users/mac/Documents/www_python/wannet/instantclient_basic/mac"
        if "darwin" in sys.platform.lower():
            instantclient_lib = os.path.join(os.path.abspath("../"), "instantclient_basic/mac")
        elif "win" in sys.platform.lower():
            instantclient_lib = os.path.join(os.path.abspath("../"), "instantclient_basic/win")
        else:
            instantclient_lib = os.path.join(os.path.abspath("../"), "instantclient_basic/linux")
        cx_Oracle.init_oracle_client(lib_dir=instantclient_lib)
        os.environ["NLS_LANG"] = "GERMAN_GERMANY.UTF8"  # 解决中文乱码
        # conn_string='oracle+cx_oracle://用户名:密码@hostIP:端口号/SID'
        # 2. 配置 oracle 数据库连接
        conn_str = "oracle+cx_oracle://dev:dev@localhost:1521/helowin"
    else:
        print("参数错误: bind")
    return conn_str


app = Flask(__name__)

# 配置数据库连接方法一: 单库
# MySQL 连接
# app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:root@localhost/wannet'
# Oracle 连接
# app.config['SQLALCHEMY_DATABASE_URI'] = "oracle+cx_oracle://dev:dev@localhost:1521/helowin"
# app.config['SQLALCHEMY_DATABASE_URI'] = get_conn_str(bind="mysql")

# 配置数据库连接方法二: 多库
SQLALCHEMY_BINDS = {
    'oracle': get_conn_str(bind="oracle"),
    'mysql': get_conn_str(bind="mysql"),
}
app.config['SQLALCHEMY_BINDS'] = SQLALCHEMY_BINDS

# 额外配置
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)


class Print(Command):
    """
    只是测试输出的内容
    """
    def run(self):
        print("hello")


class EIP(db.Model):
    """
    Oracle Model
    """
    __bind_key__ = 'oracle'  # 已设置__bind_key__,则采用设置的数据库引擎
    __tablename__ = "EIP"
    ID = db.Column(db.Integer, primary_key=True, comment="ID")
    NAME = db.Column(db.String(50), comment="username")
    TITLE = db.Column(db.String(50), comment="password")
    def __str__(self):
        return self.NAME


class User(db.Model):
    """
    MySQL Model
    """
    __bind_key__ = 'mysql'  # 已设置__bind_key__,则采用设置的数据库引擎
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True, comment="ID")
    username = db.Column(db.String(50), comment="username")
    password = db.Column(db.String(50), comment="password")
    email = db.Column(db.String(50), comment="邮箱")
    def __str__(self):
        return self.username


# 1. 方法一: 类的继承
class AddUser(Command):
    # 添加注释,标明使用功能
    """添加用户"""
    def run(self):
        u = User(username="fentiao90009", password="fentiao", email="fentiao@qq.com")
        db.session.add(u)
        db.session.commit()
        print("正在添加用户%s........" % u.username)
        # select

        userList = User.query.all()
        for item in userList:
            print(item)

        return True


class AddDEV(Command):
    # 添加注释,标明使用功能
    """添加DEV"""
    def run(self):
        u = EIP(ID="90009", NAME="fentiao", TITLE="fentiao@qq.com")
        db.session.add(u)
        db.session.commit()
        print("正在添加 DEV %s........" % u.NAME)
        return True


if __name__ == "__main__":
    """
    使用方法: 
    只是输出: python demo.py print
    MySQL数据库中添加数据: python demo.py adduser
    Oracle数据库中添加数据: python demo.py adddev
    """
    manager = Manager(app)
    manager.add_command("print", Print())
    manager.add_command("adduser", AddUser())
    manager.add_command("adddev", AddDEV())
    manager.run()

注意:
__bind_key__ = 'mysql' # 已设置__bind_key__,则采用设置的数据库引擎 用于区分这个model是哪个DB的

扩展

docker部署oracle参考: https://www.cnblogs.com/tiankx/p/14015851.html

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 16:08:24  更:2022-03-03 16:09:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 21:52:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码