python问题

1:在windows下面使用cx_Oracle2.5版本不行,用2.6就好使了
2:
ip = '127.0.0.1'
port = 1521
SID = 'aecdb'

try:
    dsn_tns = cx_Oracle.makedsn(ip, port, SID)
    
    conn = cx_Oracle.connect('user', 'pwd', dsn_tns)
    
    cursor = conn.cursor()
    
    # 如果需要批量的插入数据,就这样做
    # 用 s% 这样的写法有错,也不能使用 select 这样的操作,必须是操作数据型才能用这个函数
    sql = "insert into servers (ID,name) values(:1,:2)"
        
    # 每个值的集合为一个tuple,整个参数集组成一个tuple,或者list
    param = [('testId1', 'testName1'), ('testId2', 'testName2')]
    
    # 使用executemany方法来批量的插入数据.这真是一个很酷的方法!
    r = cursor.executemany(sql, param)
finally:
    cursor.close()
    conn.commit()   # 对数据有改动
    conn.close()

cx_Oracle.NotSupportedError: queries not supported: results undefined
这个错是说cx_Oracle不支持executemany函数
原因是cx_Oracle的executemany只支持数据操作型操作,select这样的查询类操作不支持

cx_Oracle.DatabaseError: ORA-01036:
这个异常是因为参数有错,其实就是参数的格式不对,比如
sql = "insert into servers (ID,name) values(%s, %s)"换成
sql = "insert into servers (ID,name) values(:1, :2)"这样就成了

cx_Oracle.connect 报错
Traceback (most recent call last):
如果cursor.close()报错一般都是 cursor 对像为空:
也就是conn = cx_Oracle.connect('user', 'pwd', dsn_tns)这一步没连接上
有可能是用户密码不对,或者权限不够(换ROOT用户执行即可)

你可能感兴趣的:(oracle,sql,windows,python)