Python模拟实现oracle的sqlplus工具源码

AI Agent三重上下文工程:从销售闭环到工业IoT落地实践 AI Agent已超越简单问答,进入业务深度协同阶段。其核心能力在于上下文感知(Context-Aware),即系统能主动理解会话状态、客户实体画像与实时业务事件,并据此生成精准决策建议。这依赖于结构化上下文建模、轻量级向量特征、事件驱动架构等关键技术,而非仅靠大模型参数或Prompt技巧。在工业IoT、B2B销售、CRM集成等强流程、高合规要求场景中,上下文感知直接决定AI能否替代人工完成提案生成、竞品对比、合规提醒等关键任务。本文以真实$40K商业项目为蓝本,详解如何用SQLite、n8n、Llama. 阅读详情

Python模拟实现oracle的sqlplus工具

     团队计划开发数据库服务平台,需要用到一些服务器的脚本开发,为了了解python,给自己定了一个模拟sqlplus的小需求,然后去实现。

个人体会:python开发快捷,集成很多常用的公共包,对常用数据结构使用很方便,最大的缺点是版本较多,新版本不向前兼容,对AIX及HP-UNIX不太常用的OS也缺少直接支持。

以下是工具演示:



以下是源代码:

以下代码用的python版本是python2.7 http://www.python.org/
需要安装cx_Oracle开发包(python访问ORACLE用的) http://cx-oracle.sourceforge.net/


import cx_Oracle
import os
import sys
os.environ['NLS_LANG'] ='AMERICAN_AMERICA.ZHS16GBK';

connectresult=0;
promptstr="";
fetchsize=50;
#conn = cx_Oracle.connect('yzs/yzs@mydb');
print("------------Welcome To Python Sqlplus ----------------------");
print("|  Version     : 0.1");
print("|  Author      : MKing");
print("|  Blog        : http://blog.youkuaiyun.com/yzsind");
print("|  Sina weibo  : http://weibo.com/yzsind");
print("|  Release Date: 2011-08-08");
print("|  Login Example1:username/password@tnsname");
print("|  Login Example2:username/password@host:port/dbname");
print("|  Input exit to Quit");
print("-----------------------------------------------------------");
print("");

def getConnect(loginstr):
  global connectresult
  global promptstr
  try:
    connectresult=0;
    promptstr="";
    conn= cx_Oracle.connect(loginstr);
    promptstr=conn.username+"@"+conn.dsn;
    print("Database version:",conn.version);
    print("Connected.");
    connectresult=1;
    return conn
  except cx_Oracle.InterfaceError as exc:
    error, = exc.args
    print(exc);
  except cx_Oracle.DatabaseError as exc:
    error, = exc.args
    print(error.message);

def getcolformatstr(coldef):
  if coldef[1]==cx_Oracle.NUMBER:
    formatstr='%12s';
  else:
    if coldef[2]<=32:
      formatstr='%-'+str(coldef[2])+'s';
    else:
      formatstr='%-32s';
  return formatstr
  
#########################################################################
while 1:
  try:
    loginstr=raw_input("login>").strip();
    if loginstr=="" :
      continue;
    elif loginstr in ["exit","exit;"]:
      print("...bye...");
      exit();    
    conn = getConnect(loginstr);
    if connectresult==1:
      break;
  except KeyboardInterrupt:
    print("^C");
    continue;  
while 1:
  sqlstr="";
  try:
    sqlstrline=raw_input(promptstr+">").strip();
    if sqlstrline=="" :
      continue;
    elif sqlstrline.lower() in ["exit","exit;"]:
      print("...bye...");
      exit();
    elif sqlstrline[0:7].lower()=="connect" :
      conn = getConnect(sqlstrline[8:]);
    elif sqlstrline.lower() in ["disconnect","disconnect;"] :
      conn.close();
      print("Connection closed.");
    elif sqlstrline[0:4].lower()=="host" :
      os.system(sqlstrline[4:])
    else:
      sqlstr=sqlstr+sqlstrline+'\n';
      while sqlstrline[-1]!=";" :
        sqlstrline=raw_input().strip();
        sqlstr=sqlstr+sqlstrline+'\n';
      sqlstr=sqlstr[0:len(sqlstr)-2]
      try:
        cursor = conn.cursor();
        cursor.execute(sqlstr);
        if sqlstr[0:6].lower()=="select" :
          cols=[]
          for col in cursor.description:
            print(getcolformatstr(col) % (col[0])),
          print('');
          for col in cursor.description:
            if col[1]==cx_Oracle.NUMBER:
              print('-'*12),;
            else:
              if col[2]<=32:
                print('-'*col[2]),;
              else:
                print('-'*32),;
          print('');
          recs = cursor.fetchmany(fetchsize);
          while len(recs)>0:
            for row in recs:
              for i in range(len(row)):
                if row[i]!=None:
                  print(getcolformatstr(cursor.description[i]) % row[i]),;
                else:
                  print(getcolformatstr(cursor.description[i]) % ''),;  
              print('')
            recs = cursor.fetchmany(fetchsize);
          print(str(cursor.rowcount)+" rows selected.");
        elif sqlstr[0:6].lower()=="insert" :
          print(str(cursor.rowcount)+" rows inserted.");
        elif sqlstr[0:6].lower()=="update" :
          print(str(cursor.rowcount)+" rows updated.");
        elif sqlstr[0:6].lower()=="delete" :
          print(str(cursor.rowcount)+" rows deleted.");
        elif sqlstr[0:5].lower()=="merge" :
          print(str(cursor.rowcount)+" rows merged.");
        elif sqlstr[0:6].lower()=="commit" :
          print("Commit complete.");
        elif sqlstr[0:6].lower()=="rollback" :
          print("Rollback complete.");
        else :
          print("sql execute complete.");
      except cx_Oracle.InterfaceError as exc:
        error, = exc.args
        print(exc);
      except cx_Oracle.DatabaseError as exc:
        error, = exc.args
        print(error.message);
  except KeyboardInterrupt:
    print("^C");
    continue;  
  
  
  


特别说明:纯属个人学习python的代码,未考虑扩展性与性能,未经过专业测试,不建议拿到实际工作中当SQLPLUS用。

AgentScope-Java:Java原生多智能体框架实战指南 多智能体系统(MAS)正成为AI应用落地的核心范式,其核心在于智能体的编排、记忆管理与工具调用能力。AgentScope-Java并非简单封装,而是基于Spring Boot自动装配、Nacos服务发现与Dubbo RPC等Java企业级基建,实现ReAct模式的原生支持。它将LLM推理、工具执行与状态流转深度融入Spring容器生命周期,提供沙箱化运行时、可观测Trace链路与嵌入式Studio治理平台,显著降低Java工程师构建生产级AI Agent的工程门槛。本文聚焦AgentScope-Java在订 阅读详情

相关推荐

ROS 2 Dashing核心机制解析:参数契约、QoS策略与组件化架构

ROS 2 是基于 DDS 的分布式实时机器人中间件,其核心能力体现在参数管理、服务质量(QoS)策略和组件化架构三大技术支柱上。参数系统通过声明式契约(declare-parameter)实现编译期与运行期双重校验,显著提升配置可靠性;QoS 策略(如 reliability、durability、history depth)赋予开发者对消息传输行为的精细控制权,是保障工业场景下通信鲁棒性的关键;组件化架构则依托 rclcpp_components 和 intra-process communicatio

tomfish 424

Proc 动态SQL实现SQLPlus功能源代码

#include #include #include #include #include #include #include #define MAX_ITEMS 40 #define MAX_VNAME_LEN 30 #define MAX_INAME_LEN 30 int parse_flag = 0; jmp_buf jmp_continue; char

阔野的专栏 1305

SqleditPlus源代码

自代码丢失后,评记忆进行了重写。代码看起来可能有些乱。但或许有些地方值得大家参考。现在写程序已经力不从心。回头看来已经三年没有再进行过更新了。 如今看起来有些伤感,当时的写代码的冲动和热情已经不再。希望能有人对此程序继续更新扩展。在此谢谢各位了。 对程序有什么疑问可以通过邮箱联系我,但不一定能够给予及时的回复。 l00f@163.com或myi5iw@163.com。 了解更多内容参看:www.sqleditplus.com 此域名将一直保留。 至此新春佳节之际,祝愿大家蛇年快乐,心想事成,步步高升! 2013正月初六 庞海峰。

python调用sqlplus执行_python可以调用sqlplus吗?

1. 执行一个SQL脚本文件SQL>start file_nameSQL>@ file_name我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。2. 对当前的输入进行编辑SQL>edit3. 重新运行上一次运行的sql语句SQL>/4. 将显示的内容输出到指定文件SQL> SPO...

weixin_39625305的博客 720

SqlPlus

这是一个纯JAVA的数据操作软件,目前能支持ORACLE及SQL SERVER。能同时打开多个不同数据库的连接,并支持语法检查及关键字加亮。 本软件有较好UI界面,特别适合需要使用多种数据库的开发人员使用。 本软件开放源码,结构虽然不是很清晰,但比较适合JAVA初学者学习,希望网友们能和我一起完善它。

python-oracle工具包

这是python操作oracle需要安装的一个插件,执行rpm -ivh cx_Oracle-5.2.1-11g-py26-1.x86_64.rpm进行安装

python操作oracle

进入cmd模式输入python查看自己的python版本。32位版本,3.5版本 进入https://pypi.org/project/cx_Oracle/#files下载对应的cx_oracle 下载与python对应的Oracle客户端instantclient,放置到D盘根目录 在instantclient下创建新文件夹network/ADMIN,在ADMIN文件夹下创建文件tnsnam...

qq1105273619的博客 1286

python连接oracle数据库实例

主要介绍了python连接oracle数据库的方法,实例讲述了连接Oracle数据库的具体步骤及常见的问题,需要的朋友可以参考下

Oracle数据库Java存储过程命令执行实战:oracleShell工具原理与渗透利用

Java虚拟机(JVM)作为跨平台运行环境的核心,其集成于数据库系统(如Oracle OJVM)的设计初衷是增强业务逻辑处理能力,允许在数据库内部执行Java程序。这一机制的原理在于数据库服务进程通过JVM加载并执行Java字节码,从而具备了与操作系统交互的潜在能力。从安全工程角度看,该特性若被不当利用,其技术价值便转化为高危攻击面——攻击者可通过注入恶意Java代码,以数据库服务账户权限执行系统命令,直接威胁服务器安全。在渗透测试与红队评估场景中,尤其针对仅开放数据库端口的隔离环境,利用Java存储过程实

weixin_34408717的博客 340

Python调用SQLPlus来操作和解析Oracle数据库的方法

先来看一个简单的利用python调用sqlplus来输出结果的例子: import os import sys from subprocess import Popen, PIPE sql = set linesize 400 col owner for a10 col object_name for a30 select owner, object_name from dba_objects where rownum<=10; proc = Popen([sqlplus, -S, /, as, sysdba], stdout=PIPE, stdin=

保姆级教程:用杰理701N可视化SDK搞定ANC降噪配置(从工具到代码全流程)

本文提供了一份详细的杰理701N可视化SDK配置ANC降噪功能的教程,涵盖从开发环境搭建到代码集成的全流程。通过图形化工具和代码示例,帮助开发者快速掌握ANC参数配置技巧,优化降噪效果,解决常见问题。

weixin_30616969的博客 450

AI工程100天实战:从RAG到Agent的企业数据接入全攻略

大模型应用开发正成为软件工程师的新赛道,而RAG(检索增强生成)与Agent(智能体)是落地最核心的技术范式。RAG通过将企业文档切块、向量化并存入向量数据库,在用户提问时检索相关片段拼入Prompt,从而让模型基于私有知识生成可靠回答;Agent则进一步结合函数调用与工具编排,让模型自主完成数据库查询、报告生成等复杂任务。理解这些技术的原理与工程边界,能显著降低AI应用的成本和风险。从环境搭建、API调用、Prompt优化,到本地部署量化模型、接入Oracle等传统数据库,一条完整的AI工程学习路径清晰可

weixin_34375251的博客 359

AI图像去噪实战:5种最新深度学习模型在超声图像处理中的效果对比(附代码)

本文对比了2022至2024年间五种前沿深度学习模型在超声图像去噪领域的实战效果,包括FDDL-Net、MG-CNFNet、Dual-TranSpeckle、可控去噪模型及Wave-Mamba。文章深入剖析了各模型的核心创新与架构,并提供了可运行的代码片段,旨在帮助医学影像算法工程师根据不同的性能、速度与临床需求,选择最合适的AI图像去噪解决方案。

1a2s3d4f5g的博客 915

Lilo实战:用Markdown小组件与知识图谱构建个人知识网络

知识图谱作为一种将概念、实体及其关系进行结构化表示的技术,其核心原理是通过图数据库或语义网络对信息进行建模,从而揭示数据间的深层联系。在个人知识管理领域,这一技术价值在于能够将零散的笔记内容转化为相互关联的知识网络,有效对抗信息碎片化,促进体系化思考。结合轻量级的Markdown编辑与小组件快速捕捉能力,它尤其适用于开发者记录学习笔记、管理项目构思、进行技术研究等场景。本文以Lilo工具为例,深入解析如何通过双链笔记和自动关联构建可视化知识图谱,并针对“widget”配置和“Spring Security”

438

FPGA新手必看:Create HDL Wrapper和Generating Output Products到底该先用哪个?

本文深入解析了FPGA设计中Create HDL Wrapper与Generating Output Products的正确使用顺序,帮助新手避免常见错误。详细介绍了两者的功能差异、执行顺序的底层逻辑以及工程管理的最佳实践,特别适合使用Vivado进行FPGA开发的初学者。

xk7n92h3p5m的博客 1065

WRF和WPS模型在Ubuntu系统上的安装与常见问题解决指南

本文详细介绍了在Ubuntu系统上安装WRF和WPS模型的完整教程,涵盖系统环境配置、依赖库安装、源代码编译以及常见问题的解决方案。重点解决了WPS编译中intmath.f文件的修改、环境变量设置和编译器兼容性等关键难点,帮助用户高效部署气象研究与预报模型。

weixin_29213525的博客 381

Python cx_Oracle:连接Oracle数据库的强大工具

`cx_Oracle` 是一个强大的 Python 扩展模块,专门用于连接和操作 Oracle 数据库。它遵循 [Python 数据库 API 2.0 规范][1],并在此基础上提供了丰富的功能扩展。`cx_Oracle` 不仅支持从 Python 3.6 到 3.10 的多个版本,还兼容 Oracle 11.2 到 21c 的客户端库,确保了广泛的版本兼容性。 最近,`cx_Oracle` 迎

gitblog_00639的博客 1134

高速光耦在隔离串口通信中的选型与优化策略

本文深入探讨了高速光耦在隔离串口通信中的关键作用与选型优化策略。针对串口通信中因普通光耦响应慢导致的误码问题,文章详细分析了响应时间、电流传输比、供电电压与隔离耐压等核心选型指标,并对比了6N137、HCPL-0601等主流型号。同时,提供了电路设计、PCB布局的优化技巧及实用的调试指南,旨在帮助工程师实现高速、稳定的隔离串口通信。

grpc6streamer的博客 322
上一篇: 开发者应该学习SQL的九个理由
下一篇: Oracle DML语句(insert,update,delete) 回滚开销估算
yzsind
博客等级 码龄25年 1925粉丝 328原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值