parent
1eaa7e50bc
commit
4dae661b7e
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,240 @@
|
|||
import sqlite3
|
||||
import openpyxl
|
||||
import logging
|
||||
import os
|
||||
|
||||
# 로거 인스턴스 가져오기
|
||||
logger = logging.getLogger('default_logger')
|
||||
|
||||
def create_db(db_name):
|
||||
conn = sqlite3.connect(db_name) # Create a connection to the SQLite database
|
||||
c = conn.cursor() # Create a cursor object
|
||||
|
||||
# If tables exist, delete them
|
||||
c.execute('''DROP TABLE IF EXISTS Keywords''')
|
||||
c.execute('''DROP TABLE IF EXISTS NaverShopping''')
|
||||
c.execute('''DROP TABLE IF EXISTS Taobao''')
|
||||
c.execute('''DROP TABLE IF EXISTS SubKeywords''')
|
||||
c.execute('''DROP TABLE IF EXISTS Matching''')
|
||||
c.execute('''DROP TABLE IF EXISTS SSCategoryCode''')
|
||||
|
||||
# Create tables
|
||||
c.execute('''
|
||||
CREATE TABLE Keywords(
|
||||
id INTEGER PRIMARY KEY,
|
||||
keyword TEXT,
|
||||
base_category TEXT,
|
||||
naver_code TEXT,
|
||||
isMatch INTEGER,
|
||||
MatchingUrl TEXT,
|
||||
MatchingCat TEXT,
|
||||
delvFee INTEGER,
|
||||
packingFee INTEGER,
|
||||
plusFee INTEGER,
|
||||
date_created TEXT DEFAULT (DATE('now', 'localtime')),
|
||||
time_created TEXT DEFAULT (TIME('now', 'localtime'))
|
||||
)''')
|
||||
logger.debug("테이블 Keywords 완성")
|
||||
|
||||
c.execute('''
|
||||
CREATE TABLE NaverShopping(
|
||||
id INTEGER PRIMARY KEY,
|
||||
keyword_id INTEGER,
|
||||
keyword TEXT,
|
||||
price INTEGER,
|
||||
productTitle TEXT,
|
||||
category1Name TEXT,
|
||||
category2Name TEXT,
|
||||
category3Name TEXT,
|
||||
category4Name TEXT,
|
||||
cat_code TEXT,
|
||||
openDate TEXT,
|
||||
mallCount INTEGER,
|
||||
keepCnt INTEGER,
|
||||
overseaTp INTEGER,
|
||||
reviewCount INTEGER,
|
||||
reviewCountSum INTEGER,
|
||||
scoreInfo INTEGER,
|
||||
naverPayAdAccumulatedDisplayValue INTEGER,
|
||||
mobileLowPrice INTEGER,
|
||||
lowPrice INTEGER,
|
||||
deliveryFeeContent INTEGER,
|
||||
dlvryLowPrice INTEGER,
|
||||
imageUrl TEXT,
|
||||
imgSz TEXT,
|
||||
localImagePath TEXT,
|
||||
searchKeyword TEXT,
|
||||
mallProductUrl TEXT,
|
||||
mallPcUrl TEXT,
|
||||
mallName TEXT,
|
||||
manuTag TEXT,
|
||||
mallInfoCache TEXT,
|
||||
purchaseCnt INTEGER,
|
||||
relatedTags TEXT,
|
||||
rank INTEGER,
|
||||
chinese_keyword TEXT,
|
||||
isMatch INTEGER,
|
||||
MatchingUrl TEXT,
|
||||
MatchingCat TEXT,
|
||||
delvFee INTEGER,
|
||||
packingFee INTEGER,
|
||||
plusFee INTEGER,
|
||||
tao_imageUrl TEXT,
|
||||
tao_itemID INTEGER,
|
||||
tao_localimage TEXT,
|
||||
unique_id TEXT,
|
||||
date_created TEXT DEFAULT (DATE('now', 'localtime')),
|
||||
time_created TEXT DEFAULT (TIME('now', 'localtime')),
|
||||
FOREIGN KEY(keyword_id) REFERENCES Keywords(id)
|
||||
)''')
|
||||
logger.debug("테이블 NaverShopping 완성")
|
||||
|
||||
c.execute('''
|
||||
CREATE TABLE Taobao(
|
||||
id INTEGER PRIMARY KEY,
|
||||
keyword_id INTEGER,
|
||||
taoItem_id INTEGER,
|
||||
item_name TEXT,
|
||||
imageUrl TEXT,
|
||||
price INTEGER,
|
||||
sales_volume INTEGER,
|
||||
itemUrl TEXT,
|
||||
tao_localimage TEXT,
|
||||
itemID INTEGER,
|
||||
chinese_keyword TEXT,
|
||||
isMatch INTEGER,
|
||||
MatchingUrl TEXT,
|
||||
MatchingCat TEXT,
|
||||
keywordSearchUrl TEXT,
|
||||
imageSearchUrl TEXT,
|
||||
rank INTEGER,
|
||||
date_created TEXT DEFAULT (DATE('now', 'localtime')),
|
||||
time_created TEXT DEFAULT (TIME('now', 'localtime')),
|
||||
FOREIGN KEY(keyword_id) REFERENCES Keywords(id)
|
||||
)''')
|
||||
logger.debug("테이블 Taobao 완성")
|
||||
|
||||
c.execute('''
|
||||
CREATE TABLE SubKeywords(
|
||||
id INTEGER PRIMARY KEY,
|
||||
keyword_id INTEGER,
|
||||
relatedTags TEXT,
|
||||
chinese_keyword TEXT,
|
||||
isMatch INTEGER,
|
||||
MatchingUrl TEXT,
|
||||
MatchingCat TEXT,
|
||||
date_created TEXT DEFAULT (DATE('now', 'localtime')),
|
||||
time_created TEXT DEFAULT (TIME('now', 'localtime')),
|
||||
FOREIGN KEY(keyword_id) REFERENCES Keywords(id)
|
||||
)''')
|
||||
logger.debug("테이블 SubKeywords 완성")
|
||||
|
||||
c.execute('''
|
||||
CREATE TABLE Matching(
|
||||
id INTEGER PRIMARY KEY,
|
||||
keyword_id INTEGER,
|
||||
naver_id INTEGER,
|
||||
taobao_id INTEGER,
|
||||
chinese_keyword TEXT,
|
||||
isMatch INTEGER,
|
||||
MatchingUrl TEXT,
|
||||
MatchingCat TEXT,
|
||||
sub_keyword_id INTEGER,
|
||||
date_created TEXT DEFAULT (DATE('now', 'localtime')),
|
||||
time_created TEXT DEFAULT (TIME('now', 'localtime')),
|
||||
FOREIGN KEY(keyword_id) REFERENCES Keywords(id),
|
||||
FOREIGN KEY(naver_id) REFERENCES NaverShopping(id),
|
||||
FOREIGN KEY(taobao_id) REFERENCES Taobao(id),
|
||||
FOREIGN KEY(sub_keyword_id) REFERENCES SubKeywords(id)
|
||||
)''')
|
||||
logger.debug("테이블 Matching 완성")
|
||||
|
||||
c.execute('''
|
||||
CREATE TABLE SSCategoryCode(
|
||||
id INTEGER PRIMARY KEY,
|
||||
cat_code TEXT,
|
||||
naver_code TEXT,
|
||||
cat1 TEXT,
|
||||
cat2 TEXT,
|
||||
cat3 TEXT,
|
||||
cat4 TEXT
|
||||
)''')
|
||||
logger.debug("테이블 SSCategoryCode 완성")
|
||||
|
||||
|
||||
conn.commit() # Commit the transaction
|
||||
conn.close() # Close the connection
|
||||
|
||||
def read_excel_category_data(db_name, BASE_PATH):
|
||||
baseXLS_Percenty_PATH = os.path.join(BASE_PATH, 'baseXLS_Percenty.xlsx')
|
||||
|
||||
filename = baseXLS_Percenty_PATH
|
||||
sheet_name = '스스 카테고리'
|
||||
start_row = 2
|
||||
end_row = 4900
|
||||
|
||||
workbook = openpyxl.load_workbook(filename, data_only=True)
|
||||
sheet = workbook[sheet_name]
|
||||
# logger.debug(f"read_excel_category_data - B 선택된 시트 : {sheet}")
|
||||
|
||||
# data = []
|
||||
# for row in sheet.iter_rows(min_row=start_row, max_row=end_row, values_only=True):
|
||||
# data.append(row[0]) # assuming the data is in the first column (B)
|
||||
|
||||
data = []
|
||||
# for row in sheet.iter_rows(min_row=start_row, max_row=end_row, values_only=True):
|
||||
# category = row[0]
|
||||
# naver_code = row[1] # Assuming Naver_Code is in the second column
|
||||
# data.append((category, naver_code))
|
||||
|
||||
|
||||
for row in sheet.iter_rows(min_row=start_row, max_row=end_row, values_only=True):
|
||||
# Ensure the row has at least 2 elements (for category and naver_code)
|
||||
if len(row) >= 2:
|
||||
category, naver_code = row[0], row[1]
|
||||
data.append((category, naver_code))
|
||||
else:
|
||||
# Handle rows with insufficient data, e.g., by skipping or logging them
|
||||
logger.debug(f"Skipping row with insufficient data: {row}")
|
||||
|
||||
parse_data(db_name, data)
|
||||
|
||||
def parse_data(db_name, data):
|
||||
parsed_data = []
|
||||
|
||||
# for item in data:
|
||||
# if item: # Check if the item is not None or empty
|
||||
# cat_code = item[:10]
|
||||
# logger.debug(f"parse_data - cat_code : {cat_code}")
|
||||
# categories = item[11:].split("-", maxsplit=3)
|
||||
# while len(categories) < 4:
|
||||
# categories.append(None) # Fill with None if less than 4 categories
|
||||
# parsed_data.append((cat_code, *categories))
|
||||
|
||||
for category, naver_code in data: # Unpack cat_code and naver_code
|
||||
if category:
|
||||
cat_code = category[:10]
|
||||
# logger.debug(f"parse_data - cat_code : {cat_code}")
|
||||
categories = category[11:].split("-", maxsplit=3)
|
||||
while len(categories) < 4:
|
||||
categories.append(None)
|
||||
parsed_data.append((cat_code, naver_code, *categories))
|
||||
|
||||
insert_category_data_to_db(db_name, parsed_data)
|
||||
|
||||
def insert_category_data_to_db(db_name, data):
|
||||
conn = sqlite3.connect(db_name)
|
||||
c = conn.cursor()
|
||||
|
||||
for item in data:
|
||||
c.execute('''
|
||||
INSERT INTO SSCategoryCode (cat_code, naver_code, cat1, cat2, cat3, cat4)
|
||||
VALUES (?, ?, ?, ?, ?, ?)''', item)
|
||||
|
||||
conn.commit()
|
||||
conn.close()
|
||||
|
||||
|
||||
# if __name__ == "__main__":
|
||||
# db_name = 'keywords.db'
|
||||
# create_db(db_name) # Create the database and table
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,2 @@
|
|||
ClientID: "V1UyIry1TNhzj4ln1UJ7"
|
||||
ClientSecret: "YV3EsIWlTH"
|
||||
|
|
@ -302,7 +302,7 @@ class Ui_Dialog(QtWidgets.QDialog):
|
|||
self.branch_checkBox = self.findChild(QtWidgets.QCheckBox, 'branch_checkBox')
|
||||
self.branchCount = self.findChild(QtWidgets.QLineEdit, 'branchCount')
|
||||
self.branchCount.setEnabled(False)
|
||||
|
||||
|
||||
# 체크박스 상태 변화에 따라 슬롯 연결
|
||||
self.branch_checkBox.stateChanged.connect(self.updatebranchCountState)
|
||||
|
||||
|
|
@ -1209,6 +1209,7 @@ class Ui_Dialog(QtWidgets.QDialog):
|
|||
self.db_name = db_file
|
||||
#self.loadDataFromDb(db_file)
|
||||
self.loadDataFromDb(self.db_name, "Keywords")
|
||||
self.loadTableNames()
|
||||
self.update_match_count()
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -33,13 +33,13 @@ exe = EXE(
|
|||
a.scripts,
|
||||
[],
|
||||
exclude_binaries=True,
|
||||
name='taoseller',
|
||||
name='TaoSourcerer',
|
||||
debug=True,
|
||||
bootloader_ignore_signals=False,
|
||||
strip=False,
|
||||
upx=True,
|
||||
console=True,
|
||||
onefile=True,
|
||||
onefile=False,
|
||||
disable_windowed_traceback=False,
|
||||
argv_emulation=False,
|
||||
target_arch=None,
|
||||
|
|
@ -53,5 +53,5 @@ coll = COLLECT(
|
|||
strip=False,
|
||||
upx=True,
|
||||
upx_exclude=[],
|
||||
name='taoseller',
|
||||
name='TaoSourcerer',
|
||||
)
|
||||
|
|
|
|||
Loading…
Reference in New Issue