파이썬을 이용한 엑셀 내용 업로드 질문입니다.
</p>
<p>import pymysql, openpyxl</p>
<p>from datetime import datetime</p>
<p> </p>
<p> </p>
<p>def board_write(board, subject, content, wr_link1, mb_id, nickname):</p>
<p> try:</p>
<p> # MySQL connection 및 cursor 생성</p>
<p> conn = pymysql.connect(host = '####.####.com',</p>
<p> user = '#####',</p>
<p> password = '#####',</p>
<p> db = '#####',</p>
<p> charset = 'utf8')</p>
<p> curs = conn.cursor()</p>
<p> </p>
<p> # 작성글 INSERT</p>
<p> sql = f"select wr_num from g5_write_{board}" </p>
<p> curs.execute(sql)</p>
<p> wr_num = str(int(curs.fetchone()[0]) - 1)</p>
<p> now = datetime.today().strftime('%Y-%m-%d %H:%M:%S') # 그누보드의 날짜 형식 준수 (ex: 2021-04-05 23:45:15)</p>
<p> sql = f"insert into g5_write_{board} set wr_num = {wr_num}, \</p>
<p> wr_reply = '', wr_comment = 0, ca_name = '', wr_option = 'html1', wr_subject = '{subject}', \</p>
<p> wr_content = '{content}', wr_link1 = '{wr_link1}', wr_link2 = '', \</p>
<p> wr_link1_hit = 0, wr_link2_hit = 0, wr_hit = 1, wr_good = 0, wr_nogood = 0, \</p>
<p> mb_id = '{mb_id}', wr_password = '', wr_name = '{nickname}', wr_email = '', wr_homepage = '', \</p>
<p> wr_datetime = '{now}', wr_last = '{now}', wr_ip = '111.111.111.111', \</p>
<p> wr_1 = '', wr_2 = '', wr_3 = '', wr_4 = '', wr_5 = '', \</p>
<p> wr_6 = '', wr_7 = '', wr_8 = '', wr_9 = '', wr_10 = ''"</p>
<p> curs.execute(sql)</p>
<p> </p>
<p> # 부모 아이디에 UPDATE</p>
<p> sql = f"select wr_id from g5_write_{board}"</p>
<p> curs.execute(sql)</p>
<p> wr_id = str(curs.fetchall()[-1][0])</p>
<p> sql = f"update g5_write_{board} set wr_parent = {wr_id} where wr_id = {wr_id}"</p>
<p> curs.execute(sql)</p>
<p> </p>
<p> # 새글 INSERT</p>
<p> sql = f"insert into g5_board_new ( bo_table, wr_id, wr_parent, bn_datetime, mb_id ) values \</p>
<p> ( '{board}', '{wr_id}', '{wr_id}', '{now}', '{mb_id}' )"</p>
<p> curs.execute(sql)</p>
<p> </p>
<p> # 게시글 1 증가</p>
<p> sql = f"select bo_count_write from g5_board where bo_table = '{board}'"</p>
<p> curs.execute(sql)</p>
<p> bo_count_write = str(int(curs.fetchone()[0]))</p>
<p> sql = f"update g5_board set bo_count_write = {bo_count_write} + 1 where bo_table = '{board}'"</p>
<p> curs.execute(sql)</p>
<p> </p>
<p> # MySQL connection 닫기</p>
<p> conn.close()</p>
<p> print(f"게시글 등록 성공: {subject}")</p>
<p> except Exception as e:</p>
<p> print(f"게시글 등록 실패: {e}")</p>
<p> </p>
<p> return</p>
<p> </p>
<p> </p>
<p>def read_xlsx(filename):</p>
<p> wb = openpyxl.load_workbook(filename)</p>
<p> sh = wb['Sheet1']</p>
<p> data = []</p>
<p> for i in range(sh.max_row): # XLSX 파일 길이만큼 반복문을 수행합니다.</p>
<p> temp = []</p>
<p> for j in range(1, 4):</p>
<p> cv = sh.cell(row=i+1, column=j).value</p>
<p> temp.append(cv) if not cv is None else temp.append('') # None을 ''로 처리합니다.</p>
<p> data.append(temp)</p>
<p> return data</p>
<p> </p>
<p> </p>
<p>def main():</p>
<p> result_list = read_xlsx('C:/py/py/test.xlsx')</p>
<p> board = 'free'</p>
<p> mb_id = 'test'</p>
<p> nickname = '테스트계정'</p>
<p> for r in result_list:</p>
<p> board_write(board, r[0], r[1], r[2], mb_id, nickname)</p>
<p> </p>
<p> </p>
<p>if __name__ == "__main__":</p>
<p> main()</p>
<p>
위 코드는 https://sir.kr/g5_tip/16249 게시글 작성자인 https://sir.kr/bbs/profile.php?mb_id=clinique" onclick="return false;" rel="nofollow" target="_blank" title="Innisfree 자기소개">Innisfree 님의 글을 보고 카피한 내용입니다.
해당코드를 실행하였을 때, 오류는 나지 않지만 해당 자유게시판(free)에 글이 보이지 않습니다.

최신글 보기를 하면 위와 같이 나옵니다. 01:37 글은 제가 수기로 입력한 게시글이고 나머지가 문제의 게시글입니다. 저기서 체크하고 삭제를 해도 글이 사라지지 않고, 더 큰 문제는 해당 게시판에 직접 들어가보면

위와 같이 1~4번 게시글이 없는걸 확인할 수 있습니다.
mysql 에 들어가서 해당 테이블에서 직접 삭제를 해줘야 글이 사라지는 것 같습니다.
이게 무슨 오류때문에 이렇게 되는걸까요?
코드는 큰 수정없이 db 계정 등만 수정한 상태입니다.
답변 1개
wr_num값이 잘못 들어갈 것으로 보입니다
파이썬 코드로 하지말고 update 코드가 들어있는 php를 호출하고
데이터를 넘겨주는 방법이 쉬울텐데요
write_update.php를 이용해서 pywrite_update.php를 만들고 다음처럼 해보세요
변수명은 그누보드에서 사용하는 변수명 그대로....
import requests
~
postdata = {'bo_table': board,'mb_id': mb_id, 'wr_name': nickname, 'wr_subject': subject ~~~}
url = 'http://127.0.0.1/pywrite_update.php' response = requests.post(url, data=postdata ) if response.status_code == 200 : print(response.text)
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인