duan1823a 发表于 2013-2-7 03:49:28

python问题

1:在windows下面使用cx_Oracle2.5版本不行,用2.6就好使了2:ip = '127.0.0.1'port = 1521SID = '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用户执行即可)
页: [1]
查看完整版本: python问题