파이톤에서 INSERT에서 MySQL까지의 표에도 반영되지 않는다.

Python 프로그램에서 사용하는 MySQL 작업에는 Insert가 반영되지 않습니다!!


장래의 공부를 위해 적어 두다.
네, 임시로 썼어요.다른 언어를 사용할 수 있기 때문에 파이썬 생명도 아니다.
이번에는 꼬박 이틀 동안 푹 빠졌다.

MySQL은 왠지 Insert만 반영되지 않습니다!!


이런 프로그램입니다.
CSV 파일을 읽고 MySQL의 데이터베이스 테이블에 저장합니다.
어렵지 않아요.
MySQL의 라이브러리는pytohon-MySQL입니다.
프로그램 시작의 템플릿 테이블을 복사하여 테이블을 만듭니다.
import MySQLdb

conn = MySQLdb.connect(host="extdbsrv", db="test", user="user", passwd="xxx", charset="utf8")

cursor = conn.cursor()
sql = "CREATE TABLE test like table_template"
cursor.execute(sql)
템플릿 테이블은 phpMyAdmin으로 생성됩니다.
프로그램이 생성되지 않는 것은 phpMyAdmin이 주석이 달린 표를 만드는 데 편리하기 때문이다.
프로그램을 실행하다.테이블이 정상적으로 복사됩니다.
물론 앞으로도 방송을 이어갈 것이다.
CSV 파일을 열고 한 줄 한 줄 읽고 Insert가 테이블에 표시됩니다.
SQL로 쓰기 어려운 열은 50개입니다.

왜 데이터는 데이터베이스에 쓰지 않습니까!!


프로그램 오류가 발생하지 않았지만 왜 데이터베이스에 반영되지 않고 쓸 수 없습니까?
물론 SQL 오류(MySQL이 토해낸 오류)도 나타나지 않았다.
이전에 테이블 복사가 완료되었으므로 DB에 연결할 수 있으며 쓰기 권한이 있어야 합니다.
sql = "INSERT INTO hwdata01 ( id , prefectural_id ) values (NULL,1)"
cursor.execute(sql)
insert 주 키워드만 있는 프로그램이지만 추가 기록이 없습니다...

문제 해결


방송을 보고도 무슨 영문인지 모르겠지만 당황하지 마세요. 한 번의 고장 제거예요.
  • 로컬(Windows) 환경에서 생성되지만 Linux 서버에서도 같은 Python 프로그램을 실행할 수 없습니다=>
  • DB 연결 계정에 모든 권한을 부여하는 =>안 됨
  • 목적지에 연결된 서버를 변경해 보십시오. 테스트=>안됨
  • CSV 읽기를 중지하고 Insert 임시 데이터만 읽는 프로그램으로 변경할 수 없음 =>
  • phpMyAdmin에서 같은 SQL 문장을 쓰기 = >
  • MySQL의 CLI 클라이언트에서 동일한 SQL 문에 쓰기 = >
  • 결과적으로 Python의 쓰기만 있을 뿐 Insert를 반영할 수 없습니다.

    불가사의한 현상!autoincreament 개수


    CLI 클라이언트 (MySQL 명령줄) 에서 insert와 select를 발견했지만 autoincreament (자동 번호) 가 작동하는 것 같습니다.
    python 프로그램에서 insert가 삽입되면 음반이 삽입되지 않지만 id가 확실히 1 증가했습니다.

    phpMyAdmin 화면입니다. 하지만 id가 튀었습니다.
    이 id는 CLI 고객 작업에 기록됩니다.
    나는 갈수록 이해하지 못하겠다.

    제출이 안 됐나 봐요.


    각종 검색을 하는 과정에서 나는 제출하지 않은 것이 아니냐는 의심이 생겼다.
    파이썬을 제외한 다른 언어는 자동으로 파일을 닫거나 DB 제출을 하기 때문에 너무 신경 쓰지 않아도 된다.
    신경 안 쓴 건 아니지만 파일을 여는 데도 복수가 있어서 못 봤어요.
    프로그램의 마지막에commiit/close 문장을 추가합니다.
    cursor.close
    conn.commit
    conn.close
    
    이렇게 해서 방법이 있었으면 좋겠지만 행동에는 큰 변화가 없었습니다...

    그렇게 지도 모른다, 아마, 아마...


    이틀이 걸려서 기록되지 않은 일을 많이 했어요.
    혹시 명령문 뒤에 괄호를 넣으세요.
    cursor.close()
    conn.commit()
    conn.close()
    
    결국 내가 생각한 대로 인스타그램에 넘어갔어.
    뭐지?별로 신경 안 써. 멋있는 척 안 해.
    이렇게 말하기보단 안 쓰면 잘못됐거나 경고를 해줬으면 좋겠다.
    파이톤을 사용하는 사람들은 with 문으로 자동으로 제출하라고 하겠죠.

    좋은 웹페이지 즐겨찾기