정보&강의 python로 파싱하고 XE로 게시물 자동 등록하기
- 운영자
- 910
- 0
파이썬으로 게시물을 파싱하여 XE나 라이믹스의 새로운 게시물로 등록하고자 할 때,
rx_sequence 혹은 xe_sequence의 마지막 값을 가져와서 게시물당 1씩 증가하도록 하여야 한다.
이 값이 document_srl으로 사용되며, 또 list_order와 update_order의 정렬값으로 사용된다.
인터넷에 떠도는 자료는 document_srl 값 처리가 제대로 처리되지 않아 오류 없이 파이썬으로 게시물을 등록할 수 있는 코드를 작성하였다.
파이썬 3.6 기준이며 pymysql 사용함.
#!/usr/bin/python # -*- coding: utf-8 -*- import pymysql from time import localtime, strftime # MySQL 설정 db_addr = 'localhost' db_user = 'test' db_password = 'password' db_name = 'test' # MySQL Connection 연결 conn = pymysql.connect(host=db_addr, user=db_user, password=db_password, db=db_name, charset='utf8') # Connection 으로부터 Cursor 생성 curs = conn.cursor() # SQL문 실행 - rx_sequence 현재값 def get_last_rx_sequence(): rx_sequence_sql = "SELECT `seq` FROM `rx_sequence` ORDER BY `seq` DESC limit 1" curs.execute(rx_sequence_sql) # 데이타 Fetch rx_sequence_sql_rows = curs.fetchall() rx_sequence = rx_sequence_sql_rows[0][0] return rx_sequence # 현재 rx_sequence_sql의 값 print(get_last_rx_sequence()) # rx_sequence_sql_rows의 값을 증가시킴 # 증가된 rx_sequence = 새로 생길 document_srl가 될 것임 # rx_sequence_sql_rows 현재값에 1을 추가 new_rx_sequence_rows = int(get_last_rx_sequence() + 1) print(new_rx_sequence_rows) # SQL문 실행 - DB rx_sequence 현재값에 1을 추가 rx_sequence_inser_sql = """INSERT INTO `rx_sequence` (seq) VALUES (%s);""" curs.execute(rx_sequence_inser_sql, (new_rx_sequence_rows)) conn.commit() # 게시물 입력정보 document_srl = get_last_rx_sequence() module_srl = "68" member_srl = "4" user_name = "admin" nick_name = "운영자" cTime = strftime("%Y%m%d%H%M%S", localtime()) title = "제목" content = "내용" tags = "tt,tdf,tdfd,wrf,dfsf" rx_document_inser_sql = """INSERT INTO `rx_documents` (`document_srl`, `module_srl`, `title`, `content`, `member_srl`, `regdate`, `last_update`, `category_srl`, `lang_code`, `is_notice`, `title_bold`, `title_color`, `readed_count`, `voted_count`, `blamed_count`, `comment_count`, `trackback_count`, `uploaded_count`, `password`, `user_id`, `user_name`, `nick_name`, `email_address`, `homepage`, `tags`, `extra_vars`, `last_updater`, `ipaddress`, `list_order`, `update_order`, `allow_trackback`, `notify_message`, `status`, `comment_status`) VALUES (%s, %s, %s, %s, %s, %s, %s, '0', 'ko', 'N', 'N', 'N', '0', '0', '0', '0', '0', '0', NULL, NULL, %s, %s, '', '', %s, NULL, NULL, '', %s, %s, 'N', 'N', 'PUBLIC', 'ALLOW');""" curs.execute(rx_document_inser_sql, (document_srl, module_srl, title, content, member_srl, cTime, cTime, user_name, nick_name, tags, -document_srl, -document_srl)) conn.commit() # `list_order` 와 `update_order`는 document_srl의 역순으로 입력하면 됨.
해당 소스는 첨부파일에 대한 처리는 들어가있지 않다.
이런 글도 찾아보세요!
댓글 0
권한이 없습니다. 로그인