2016-07-02 2 views
1

문자열과 숫자를 입력하는 방법 만 알고 있지만 목록을 입력하는 방법이 있습니까? 기본적으로 나는 사전을 가지고 있으며 각 키는 데이터베이스에 저장됩니다. 각 키의 값은 목록이며 데이터베이스에서도이 값을 원합니다.sqlite3 데이터베이스에 목록을 삽입하는 방법

+1

목록을 하나의 항목 또는 표로 입력 하시겠습니까? 테이블 인 경우 반복되는 삽입 또는 블록 삽입을 사용하십시오. https://www.sqlite.org/lang_insert.html을 참조하십시오. - VALUES 부분의 구문을 살펴보십시오. – cup

답변

1

SQLite3에는 배열 데이터 형식이 없습니다. (Datatypes in SQLite version 3 참조)

그러나 sqlite3 테이블에 삽입하도록 직렬화 할 수 있습니다.

예를 들어, 목록을 json 문자열로 변환하고 문자열을 사용하여 테이블에 삽입 할 수 있습니다. (json.dumps)

cursor.execute('INSERT INTO a_table (..., a_list_field) values (..., ?)', 
       [..., json.dumps(a_list_object)]) 

선택하면 json 문자열을로드하여 목록으로 다시 변환하십시오. (json.loads)

0

sqlite3을 사용하면 데이터베이스를 삭제하고 data이라는 목록을 사용하여 새 데이터로 다시 작성하는이 스크립트를 실행할 수있었습니다. 위의 스크립트가 실행되면, data4 하위 목록에 걸리고 새 데이터베이스를 만들도록의 데이터를 사용

from views import db 
from config import DATABASE_PATH 

import sqlite3 
from datetime import datetime 

with sqlite3.connect(DATABASE_PATH) as connection: 
    c = connection.cursor() 

    c.execute("""ALTER TABLE tasks RENAME TO old_tasks""") 

    db.create_all() 

    c.execute("""SELECT name, due_date, priority, 
       status FROM old_tasks ORDER BY task_id ASC""") 

    data = [(row[0], row[1], row[2], row[3], 
     datetime.now(), 1) for row in c.fetchall()] 

c.executemany("""INSERT INTO tasks (name, due_date, priority, status, 
        posted_date, user_id) VALUES (?, ?, ?, ?, ?, ?)""", data) 


    c.execute("DROP TABLE old_tasks") 

: 이것은하거나 특정 질문에 대답하지 않을 수도 있습니다.

희망이 있습니다.

관련 문제