这个项目的地址 传送门

第一个python3项目,对python 还是学习中,请大佬轻喷,欢迎指点

import jaydebeapi

from .database import Database

dirver = 'oracle.jdbc.OracleDriver'
jarFile = '/Users/warrior/Code/python/builder/jar/ojdbc6-11.2.0.1.0.jar' class DbOracle(Database): def get_jdbc_connection(self):
import jpype
if jpype.isJVMStarted() and not jpype.isThreadAttachedToJVM():
jpype.attachThreadToJVM()
jpype.java.lang.Thread.currentThread().setContextClassLoader(jpype.java.lang.ClassLoader.getSystemClassLoader())
connection = jaydebeapi.connect(dirver, self.url, {'user': self.user, 'password': self.password, 'tmode': 'TERA', 'charset': 'UTF8'}, jarFile)
return connection def connect(self, url, user, password):
self.url = url
self.user = user
self.password = password def userTables(self):
data = self.execute("""SELECT A.TABLE_NAME, B.COMMENTS FROM USER_TABLES A
LEFT JOIN USER_TAB_COMMENTS B ON A.TABLE_NAME=B.TABLE_NAME""")
result = []
for table in data:
result.append({'name': table[0], 'comment': table[1]})
return result def columns(self, table_name):
data = self.execute("""SELECT A.COLUMN_NAME, A.DATA_TYPE, A.DATA_LENGTH, A.DATA_PRECISION, A.DATA_SCALE, A.NULLABLE, B.COMMENTS
FROM USER_TAB_COLUMNS A LEFT JOIN USER_COL_COMMENTS B
ON A.TABLE_NAME=B.TABLE_NAME AND A.COLUMN_NAME=B.COLUMN_NAME
WHERE A.TABLE_NAME='%s' ORDER BY COLUMN_ID ASC""" % table_name)
result = []
primary_key = self.table_primary(table_name)
for column in data:
result.append({'name': column[0], 'type': column[1], 'primary': column[0] in primary_key,
'length': column[2], 'precision': column[3], 'scale': column[4], 'nullable':column[5], 'comment': column[6]})
return result def table_primary(self, table_name):
sql = """SELECT cols.column_name FROM all_constraints cons, all_cons_columns cols
WHERE cols.table_name = '%s' AND cons.constraint_type = 'P'
AND cons.constraint_name = cols.constraint_name AND cons.owner = cols.owner
ORDER BY cols.table_name""" % table_name
data = self.execute(sql)
result = []
for d in data:
result.append(d[0])
return result def execute(self, sql):
conn = self.get_jdbc_connection()
curs = conn.cursor()
curs.execute(sql)
result = curs.fetchall()
curs.close()
conn.close()
return result def close(self):
if (self.conn != None):
self.conn.close()

python用jdbc读取oracle表和列的信息,生成java代码的更多相关文章

  1. [Spark][Hive][Python][SQL]Spark 读取Hive表的小例子

    [Spark][Hive][Python][SQL]Spark 读取Hive表的小例子$ cat customers.txt 1 Ali us 2 Bsb ca 3 Carls mx $ hive h ...

  2. jdbc 读取oracle long raw 字段,里面存的是文本

    jdbc 读取oracle long raw 字段,里面存的是文本 参考: http://singlewolf.iteye.com/blog/278769 http://blog.csdn.net/r ...

  3. Oracle表、列、约束的操作

    获得有关表的信息 可以直接DESCRIBE DESC[RIBE] table_name; 可以通过数据字典 SELECT * FROM user_tables WHERE table_name =xx ...

  4. 用generator 根据oracle表生成java代码,数据库与代码字段不一致

    前两天用generator生成java代码时发现,生成的javabean和数据库里的字段对应不上,不是少几个就是有几个字段不一样,感觉很怪异,后来发现日志里边这个表转换成bean是日志打印了好几遍,所 ...

  5. Python xlrd模块读取Excel表中的数据

    1.xlrd库的安装 直接使用pip工具进行安装(当然也可以使用pycharmIDE进行安装,这里就不详述了) pip install xlrd 2.xlrd模块的一些常用命令 ①打开excel文件并 ...

  6. T4模板根据数据库表和列的Description生成代码的summary的终极解决方案

    相信很多人都用T4模版生成代码,用T4模版生成标准代码真的很方便.我们经常根据表生成相关的代码, 但是估计很多人都遇见过同一个问题, 特别是我们在生成model的时候,代码中model中的Summar ...

  7. 查看oracle表中列的数据类型

    一. SQLPLUS中,直接用 DESC[ribe] tablename 即可. 二.在外部应用程序调用查看ORACLE中的表结构时,只能用下面的语句代替: 1.看字段名与数据类型 select * ...

  8. JDBC读取Oracle的US7ASCII编码中文乱码及不同编码下汉字占用字节的问题

    数据库版本号:Oracle 10g 字符集:SIMPLIFIED CHINESE_CHINA.US7ASCII JDK:1.6.0_45 Oracle驱动:ojdbc14.jar 使用JDBC操作数据 ...

  9. 读取Oracle表结构数据

    <html lang="zh-cn"> <head> <meta name="generator" content="O ...

随机推荐

  1. Ubuntu为mysql的root用户密码问题

    1.root用户免密码登录mysql Ubuntu装完mysql时,root用户可以免密登录,如果设置的root用户密码忘记了,想要使用root用户免密登录,修改在配置文件的[mysqld]节点下添加 ...

  2. git与gitlab工具

    1.Git和SVN的对比 1)git是分布式的,svn是集中式的.(最核心) 2)git是每个历史版本都存储完整的文件,便于恢复,svn是存储差异文件,历史版本不可恢复.(核心) 3)git可离线完成 ...

  3. linux下Eclipse进行C编程时动态链接库的生成和使用

    引用 http://linux.chinaitlab.com/soft/864157.html 欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 一.创建动态链接库1.创建 ...

  4. Web Components的概念和用法

    参考链接:https://developer.mozilla.org/zh-CN/docs/Web/Web_Components

  5. 【Linux-驱动】printk的打印级别

    级别: 日志级别用宏表示,日志级别宏展开为一个字符串,在编译是由预处理器将它和消息本文拼接成一个字符串,因此printk函数中日志级别宏和格式字符串间不能有逗号.printk的日志级别定义在 /inc ...

  6. 使用CompletableFuture进行异步任务编排

    1.JDK5引入了Future进行异步任务的处理,Future 的接口主要方法有以下几个: (1)boolean cancel (boolean mayInterruptIfRunning) 取消任务 ...

  7. delphi 连接各中数据库方法

    ---恢复内容开始--- 数据库连接字符串的拼写规则的决定条件: • 连接的数据库的类型:SQL Server,Oracle,MySQL,Acess,MogoDB,Visual FoxPro(dBAS ...

  8. Hadoop简介及架构

    狭义上来说,hadoop就是单独指代hadoop这个软件, 广义上来说,hadoop指代大数据的一个生态圈,包括很多其他的软件 2.hadoop的历史版本介绍 0.x系列版本:hadoop当中最早的一 ...

  9. ASP.NET Core中使用EasyCaching作为缓存抽象层

    ⒈是什么? 和CacheManager差不多,两者的定位和功能都差不多. EasyCaching主要提供了下面的几个功能 统一的抽象缓存接口 多种常用的缓存Provider(InMemory,Redi ...

  10. 初入JavaWeb(半成品)

    2019-10-21 20:51:03 初次进行Javaweb的开发. 要求: 1登录账号:要求由6到12位字母.数字.下划线组成,只有字母可以开头:(1分) 2登录密码:要求显示“• ”或“*”表示 ...