>

피닉스 테이블을 만들었습니다 :

create table movement_record(
id varchar not null,
latitude float,
longitude float,
location varchar,
duration float,
start_time varchar not null,
end_time varchar not null,
CONSTRAINT pk PRIMARY KEY (id, start_time, end_time)
);

위의 Phoenix 테이블에 목록 목록을 작성하고 싶습니다. 리스트 일람 ( final_output ) ) 데이터 변수는 [[string,float,float,string,float,datetime,datetime],[---],--] 입니다 아래 코드를 사용하여 Phoenix에서 데이터를 작성하려고합니다.

   _phoenixdb = phoenixdb
    conn = _phoenixdb.connect(connection_string, autocommit=True)
    cursor = conn.cursor()
    for row in final_output:
        id=row[0]
        latitude=row[1]
        longitude=row[2]
        ignition_on=row[3]
        location=row[4]
        duration=row[5]
        start_time=row[6]
        end_time=row[7]
        sql = "UPSERT INTO movement_record VALUES (?,?,?,?,?,?,?,?)", (truck_id,latitude,longitude,ignition_on,location,duration,start_time,end_time)
        cursor.execute(sql)

오류가 발생했습니다 :

Traceback (most recent call last):
  File "main.py", line 61, in output_to_phoenix
    cursor.execute(sql)
  File "/usr/local/lib/python2.7/dist-packages/phoenixdb/cursor.py", line 201, in execute
    operation, first_frame_max_size=self.itersize)
  File "/usr/local/lib/python2.7/dist-packages/phoenixdb/avatica.py", line 399, in prepare_and_execute
    request.sql = sql
TypeError: ('UPSERT INTO movement_record VALUES (?,?,?,?,?,?,?,?)', (u'SRT1', -23.333999633789062, has type tuple, but expected one of: bytes, unicode

그것은 명백한 해결책처럼 보이지만 여기서 내가 잃어버린 것을 알아낼 수는 없습니다. 도움을 부탁드립니다. 감사합니다.


  • 답변 # 1

    첫번째 매개 변수 cursor.execute  문자열이고 두 번째는 매개 변수의 튜플입니다. 다음과 같이 코드를 변경하는 것이 좋습니다.

    sql = "UPSERT INTO movement_record VALUES (?,?,?,?,?,?,?,?)"
    params = (truck_id,latitude,longitude,ignition_on,location,duration,start_time,end_time)
    cursor.execute(sql, params)
    
    

    사전 구성된 인수를 튜플로 유지하려면 다음을 수행하십시오.

    cursor.execute(*sql)
    
    

    이는 튜플을 확장하고 항목을 개별 매개 변수로 전달합니다.

관련 자료

  • 이전 c++ - cpp에서 명령 실행
  • 다음 android - 치명적인 예외 - javalangoutofmemoryerror : pthread_create at comgooglemapsapi