实战经验分享,Python 连接 Oracle 踩坑实录,高级Python开发面试解答

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注Python)
img

正文

上网查吧,发现是因为 python 的安装目录下,没有 oracle 的 dll 文件,也许是因为第三方包需要,那就安排。

我从网上找到的帖子中提供了 oracle11 的 dll 文件,下载回来放到 python 安装目录后迫不及待的再次运行代码,结果 DPI-1047 的错误倒是没有了,换成 “ORA-28040: No matching authentication protocol” 了。

只好再次上网查询出错原因,原来是 oracle 的版本不一致,我用的是 oracle11 的 dll,而我连接的 oracle 版本是在我使用 select * from v$version 语句查询后,才看到我连接的 oracle 版本。

问题跟着又来了,我去哪找12.2版本的dll文件呢?还是继续网上找,多篇文章都说要下载一个instantclient。那就把它请出来吧。

我通过oracle官网找到并下载了instantclient,地址如下:https://www.oracle.com/cn/database/technologies/instant-client/winx64-64-downloads.html

而下载下来的 instantclient 其实就是一个zip包,打开这个包,把里面所有的dll都一股脑的复制到 python 的根目录下,链接的问题终于解决了!

下面就开始创建表了,我是直接把 MySQL 创建表的语句直接拿了过来,结果就不出意外的出了意外。

报错信息:

ORA-00907: missing right parenthesis,报错位置在创建表语句。因为是用 MySQL的建表语句,所以只好找 oracle 相关建表语句,发现和 MySQL 语句还是有区别的。首先,表名和字段名上的小引号要去掉;其次,字段类型不同,得改(oracle与MySQL对应请网上自查);最后,oracle不支持自增,主键在字段定义中声明。

MySQL建表语句:

creat_table_sql="""CREATETABLE `testtable`(
  `id` bigintNOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL COMMENT '字典名称',
  `remark` varchar(255) DEFAULTNULL COMMENT '描述',
  `testC01umn1` varchar(128) DEFAULTNULL,
  `testC01umn2` datetimeDEFAULTNULL,
  `testC01umn3` intDEFAULTNULL,
  `testC01umn4` varchar(128) DEFAULTNULL,
  `testC01umn5` varchar(128) DEFAULTNULL,
  `testC01umn6` varchar(128) DEFAULTNULL,
  `testC01umn7` varchar(128) DEFAULTNULL,
  `testC01umn8` varchar(128) DEFAULTNULL,
  `testC01umn9` intDEFAULTNULL,
  `testC01umn10` datetimeDEFAULTNULL,
  `testC01umn11` varchar(128) DEFAULTNULL,
  `testC01umn12` varchar(128) DEFAULTNULL,
  `testC01umn13` varchar(128) DEFAULTNULL,
  `testC01umn14` varchar(128) DEFAULTNULL,
  `testC01umn15` varchar(128) DEFAULTNULL,
  PRIMARYKEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=Utf8mb4_0900_ai_ci COMMENT='测试表'"""


Oracle建表语句:

creat_table_sql="""CREATETABLE testtable (
  id NUMBER(38,0) NOT NULLPRIMARY KEY,
  nameVARCHAR2(255) NOT NULL,
  remark VARCHAR2(255) DEFAULTNULL,
  testColumn1 VARCHAR2(128) DEFAULTNULL,
  testColumn2 DATEDEFAULTNULL,
  testColumn3 NUMBER(10) DEFAULTNULL,
  testColumn4 VARCHAR2(128) DEFAULTNULL,
  testColumn5 VARCHAR2(128) DEFAULTNULL,
  testColumn6 VARCHAR2(128) DEFAULTNULL,
  testColumn7 VARCHAR2(128) DEFAULTNULL,
  testColumn8 VARCHAR2(128) DEFAULTNULL,
  testColumn9 NUMBER(10) DEFAULTNULL,
  testColumn10 DATEDEFAULTNULL,
  testColumn11 VARCHAR2(128) DEFAULTNULL,
  testColumn12 VARCHAR2(128) DEFAULTNULL,
  testColumn13 VARCHAR2(128) DEFAULTNULL,
  testColumn14 VARCHAR2(128) DEFAULTNULL,
  testColumn15 VARCHAR2(128) DEFAULTNULL
"""


建表语句的问题解决了,后面就要插入数据,问题更是一大堆。

最先出现的错误是:ORA-00928: missing SELECT keyword,这个错误主要是因为插入的数据字段名含有关键字,我试了好几种办法都无法避免(主要是懒的再从新建表或修改字段名)

最后插入数据的语句干脆就不填写字段名,只要位置正确就可以了,还有就是插入的数据不能使用python的格式化符号‘%s’来替换,只能使用占位符。所以这时的插入语句就变成了这样:

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
c (备注python)**
[外链图片转存中…(img-XK0kH3H5-1713558040974)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值