python 처음이여서.. pandas좀 질문 드립니다!
조회수 1507회
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을 구성하면, 원하는 결과를 얻을 수 있습니다.
댓글 입력