你这个是update
你换成select语句再测试一下看看
应该在当前数据库连接下commit
所以正确写法是conn.commit()
你好! 你看我发的截图是我调试的截图,我在调试到执行SQL语句这一步,cursor.execute(sql)时返回None,我这是在操作修改语句,按理说是不是应该返回受影响的行数呀。
并且下面我有commit(),我去查数据库并没有修改迹象。
@Lonely丶B: 你不是在当前数据连接上commit的。。。
应该是conn.commit
输出一下堆栈except,看看是不是报错了
你好! 代码运行会输出try最后的修改成功,不会进except里面。因为我是打了多个断点调试的,execute(sql)执行完成后会往下走,没有报错。
@Lonely丶B: 排除这个了,那你试试更新一条别的数据,或者换张表更新试试。可能发生锁表/锁数据的情况。
@Beyond-bit: 你好! 好像还是不行,我先在一张表进行删除,修改,execute(sql)返回的还是None,我又换了张表依旧还是None, 但是执行查询语句的时候都可以查出来,就是执行增删改的时候返回None。
@Lonely丶B:
1.登录数据库终端试试update
2.用命令看一下当前锁的情况。
@Beyond-bit: 你好,通过plsql登录是可以进行修改,删除的,并且通过Pycharm中的DB browser关联数据库也是可以进行修改操作的,就是通过xc_oracle包进行代码更新数据库的时候没反应。很难受的问题。并且也没有锁表
@Lonely丶B: 那基本锁定了问题了,代码端的问题。
1.如果肯定你代码没错,也没报错一切正常,有可能库太旧或者库跟数据库服务器版本不匹配。
2.有可能触发python库bug
建议:可以换个python 库试试。
@Beyond-bit: 你好 我python是3.7.4的版本,数据库是oracle 11g 的
@Beyond-bit: 你就别在这误导人家了。cx_Oracle 是oracle官方出的库,并且保持正常更新中,你们这是在怀疑官方没有能力提供能基本正常运行的API?
@codegay: 你好! 你知道这大概是什么问题导致的么 。 我百度了好多python操作oracle数据库的写法,感觉都差不多,找不到是哪里的问题。 你说连不上数据库把,但是查询是可以查出来的,就是增删改不行,执行cursor.execute()返回None
@Lonely丶B: 我上面回复了你不看。
@codegay: 我看到了,Connection我是单独写方法return出来的,一样的。 现在是我换没有到提交的这一步,在执行SQL语句的时候就返回None了,正常来说应该返回受影响的行数。我查询的时候是没问题的。
有提交事务?
你好!有提交事务,commit(),但是在commit之钱执行cursor.execute(sql)方法时结果返回None,所以下面的提交没有任何意义。 按理说执行增删改sql语句时应该返回受影响的行数。
你提交事务是用了一个新对象提交的
原始执行sql的对象是conn,
下边你进行commit的时候,用了Getorcal(),和你之前的conn不是一个对象吧?
也就是下边commit的时候,没有执行任何存储过程