python 처음이여서.. pandas좀 질문 드립니다!

조회수 1505회

nosql 에서

select user_info from users limit 10

user_info 에 user_id, user_name, age 등등 컬럼이 있고 쿼리를 하여서 10개를 가져와서

데이터프레임 df.to_sql을 사용해서

df.to_sql(name='my_sql', con=db, if_exists='append', index=False)

하려 하는데

insert (user_id, user_name ... ) value (%s ) 이걸 원하는데

insert(user) values (users)로 나오는데 혹시 dataframe 어떻게 변경해야 되는지 알려주실 수 있을까요.

원하는 데이터 변경은

user_info: {
   [
        {user_id : 1, user_name : "길동", age : 20},
        {user_id : 2, user_name : "길동", age : 20},
        {user_id : 13 user_name : "길동", age : 20}
]}
 [
        {user_id : 1, user_name : "길동", age : 20},
        {user_id : 2, user_name : "길동", age : 20},
        {user_id : 13 user_name : "길동", age : 20}
]

1 답변

  • 현재 데이터는 NoSQL 형태로 보여집니다. 이는 SQL 데이터베이스와 다르게 계층적인 데이터나 중첩된 데이터를 보다 쉽게 저장할 수 있습니다. 반면 SQL 데이터베이스에서는 테이블 형태의 데이터만을 다룹니다.

    위에서 주어진 데이터를 pandas DataFrame으로 만들기 위해서는 먼저 데이터를 단순화해야 합니다. 데이터를 리스트로 변경하면 pandas가 이해할 수 있는 형태로 변환할 수 있습니다.

    다음은 이를 실행하는 방법입니다:

    import pandas as pd
    
    data = [
        {"user_id": 1, "user_name": "길동", "age": 20},
        {"user_id": 2, "user_name": "길동", "age": 20},
        {"user_id": 3, "user_name": "길동", "age": 20}
    ]
    
    df = pd.DataFrame(data)
    

    이렇게 하면, DataFrame의 각 행이 하나의 사용자 정보를 나타내게 됩니다. DataFrame의 각 열은 'user_id', 'user_name', 'age' 등의 특성을 나타내는데, 이는 각 사용자의 정보를 나타내는 데 사용됩니다.

    그 후에 df.to_sql(name='my_sql', con=db, if_exists='append', index=False) 를 사용하면 해당 데이터프레임이 SQL 데이터베이스의 'my_sql' 테이블로 삽입됩니다. 각 행은 각 사용자의 정보를 나타내며, 각 열은 각 사용자의 특성을 나타내게 됩니다.

    to_sql 메서드는 기본적으로 모든 DataFrame의 열을 SQL 테이블의 열로 만듭니다. 따라서 여러분이 원하는 insert (user_id, user_name ... ) value (%s ) 형태의 쿼리는 자동으로 생성됩니다.

    DataFrame에서 SQL로의 데이터 삽입은 pandas가 내부적으로 처리하므로, 쿼리의 형태를 직접 제어할 수는 없습니다. 하지만 각 열의 이름이 SQL 테이블의 열 이름과 일치하도록 DataFrame을 구성하면, 원하는 결과를 얻을 수 있습니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)