commit b0ecc65d65c363ff1e785c43822f0dd359f32abb Author: 吳佩庭 Date: Fri Jul 25 15:47:50 2025 +0800 first_project diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dfe0770 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/add_id_column.py b/add_id_column.py new file mode 100644 index 0000000..ee81112 --- /dev/null +++ b/add_id_column.py @@ -0,0 +1,45 @@ + +import mysql.connector + +def get_connection_details(): + details = {} + with open('setting.txt', 'r') as f: + for line in f: + key, value = line.strip().split(':', 1) + details[key.strip()] = value.strip() + return details + +def alter_table(): + try: + config = get_connection_details() + conn = mysql.connector.connect( + host=config.get('Host'), + port=config.get('Port'), + user=config.get('Username'), + password=config.get('Password'), + database=config.get('Database') + ) + cursor = conn.cursor() + + # Check if the id column already exists + cursor.execute("SHOW COLUMNS FROM extension_data LIKE 'id'") + result = cursor.fetchone() + + if not result: + # Add the id column with auto-increment + alter_query = "ALTER TABLE extension_data ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY FIRST" + cursor.execute(alter_query) + conn.commit() + print("Table 'extension_data' altered successfully. `id` column added.") + else: + print("Column 'id' already exists in 'extension_data'.") + + except Exception as e: + print(f"An error occurred: {e}") + finally: + if 'conn' in locals() and conn.is_connected(): + cursor.close() + conn.close() + +if __name__ == "__main__": + alter_table() diff --git a/alter_column_to_nvarchar.py b/alter_column_to_nvarchar.py new file mode 100644 index 0000000..ce74840 --- /dev/null +++ b/alter_column_to_nvarchar.py @@ -0,0 +1,41 @@ + +import mysql.connector + +def get_connection_details(): + details = {} + with open('setting.txt', 'r') as f: + for line in f: + key, value = line.strip().split(':', 1) + details[key.strip()] = value.strip() + return details + +def alter_columns_to_nvarchar(): + conn = None + try: + config = get_connection_details() + conn = mysql.connector.connect( + host=config.get('Host'), + port=config.get('Port'), + user=config.get('Username'), + password=config.get('Password'), + database=config.get('Database') + ) + cursor = conn.cursor() + + print("Altering 'name' column to NVARCHAR...") + cursor.execute("ALTER TABLE extension_data MODIFY name NVARCHAR(255)") + print("Altering 'position' column to NVARCHAR...") + cursor.execute("ALTER TABLE extension_data MODIFY position NVARCHAR(255)") + + conn.commit() + print("Columns 'name' and 'position' altered to NVARCHAR successfully.") + + except Exception as e: + print(f"An error occurred: {e}") + finally: + if conn and conn.is_connected(): + cursor.close() + conn.close() + +if __name__ == "__main__": + alter_columns_to_nvarchar() diff --git a/alter_table_for_user_request.py b/alter_table_for_user_request.py new file mode 100644 index 0000000..39ab3dc --- /dev/null +++ b/alter_table_for_user_request.py @@ -0,0 +1,61 @@ + +import mysql.connector + +def get_connection_details(): + details = {} + with open('setting.txt', 'r') as f: + for line in f: + key, value = line.strip().split(':', 1) + details[key.strip()] = value.strip() + return details + +def alter_table_columns(): + try: + config = get_connection_details() + conn = mysql.connector.connect( + host=config.get('Host'), + port=config.get('Port'), + user=config.get('Username'), + password=config.get('Password'), + database=config.get('Database') + ) + cursor = conn.cursor() + + # Check and rename 'unit' to 'plant' + cursor.execute("SHOW COLUMNS FROM extension_data LIKE 'unit'") + if cursor.fetchone(): + print("Renaming 'unit' to 'plant'...") + cursor.execute("ALTER TABLE extension_data CHANGE COLUMN unit plant VARCHAR(255)") + print("Column 'unit' renamed to 'plant' successfully.") + else: + print("Column 'unit' does not exist or already renamed.") + + # Check and drop 'source_file' + cursor.execute("SHOW COLUMNS FROM extension_data LIKE 'source_file'") + if cursor.fetchone(): + print("Dropping 'source_file' column...") + cursor.execute("ALTER TABLE extension_data DROP COLUMN source_file") + print("Column 'source_file' dropped successfully.") + else: + print("Column 'source_file' does not exist or already dropped.") + + # Check and drop 'sheet' + cursor.execute("SHOW COLUMNS FROM extension_data LIKE 'sheet'") + if cursor.fetchone(): + print("Dropping 'sheet' column...") + cursor.execute("ALTER TABLE extension_data DROP COLUMN sheet") + print("Column 'sheet' dropped successfully.") + else: + print("Column 'sheet' does not exist or already dropped.") + + conn.commit() + + except Exception as e: + print(f"An error occurred: {e}") + finally: + if 'conn' in locals() and conn.is_connected(): + cursor.close() + conn.close() + +if __name__ == "__main__": + alter_table_columns() diff --git a/app.py b/app.py new file mode 100644 index 0000000..43ea58c --- /dev/null +++ b/app.py @@ -0,0 +1,188 @@ + +from flask import Flask, render_template, request, redirect, url_for, jsonify, send_from_directory +import mysql.connector +import csv +import io +import os + +def get_connection_details(): + details = {} + base_dir = os.path.dirname(os.path.abspath(__file__)) + settings_file = os.path.join(base_dir, 'setting.txt') + with open(settings_file, 'r') as f: + for line in f: + key, value = line.strip().split(':', 1) + details[key.strip()] = value.strip() + return details + +app = Flask(__name__) + +def get_db_connection(): + config = get_connection_details() + conn = mysql.connector.connect( + host=config.get('Host'), + port=config.get('Port'), + user=config.get('Username'), + password=config.get('Password'), + database=config.get('Database') + ) + return conn + + +@app.route('/') +def index(): + conn = get_db_connection() + cursor = conn.cursor(dictionary=True) + search_query = request.args.get('search', '') + if search_query: + query = ("SELECT plant, department, csv_id AS name, position, extension, id FROM EXT WHERE plant LIKE %s OR department LIKE %s OR csv_id LIKE %s OR position LIKE %s OR extension LIKE %s") + search_term = f"%{search_query}%" + cursor.execute(query, (search_term, search_term, search_term, search_term, search_term)) + else: + cursor.execute("SELECT plant, department, csv_id AS name, position, extension, id FROM EXT") + data = cursor.fetchall() + conn.close() + return render_template('index.html', data=data, search_query=search_query) + + +@app.route('/batch_upload', methods=['POST']) +def batch_upload(): + if 'csv_file' not in request.files: + return redirect(url_for('index')) + + file = request.files['csv_file'] + if file.filename == '': + return redirect(url_for('index')) + + if file: + conn = get_db_connection() + cursor = conn.cursor() + + try: + # Read the CSV file content + stream = io.StringIO(file.stream.read().decode('Big5', errors='ignore')) + csv_reader = csv.reader(stream) + + next(csv_reader, None) # Skip header row + + for i, row in enumerate(csv_reader): + if len(row) < 5: # Ensure row has enough columns + print(f"Skipping malformed row {i+2}: {row}") + continue + + plant = row[0] + department = row[1] + csv_id = row[2] + position = row[3] + extension = row[4] + + # Check if record exists based on plant and csv_id + cursor.execute("SELECT id FROM EXT WHERE plant = %s AND csv_id = %s", (plant, csv_id)) + existing_record = cursor.fetchone() + + if existing_record: + # Update existing record + update_query = ("UPDATE EXT SET department=%s, position=%s, extension=%s WHERE id=%s") + cursor.execute(update_query, (department, position, extension, existing_record[0])) + else: + # Insert new record + insert_query = ("INSERT INTO EXT (plant, department, csv_id, position, extension) VALUES (%s, %s, %s, %s, %s)") + cursor.execute(insert_query, (plant, department, csv_id, position, extension)) + + conn.commit() + return jsonify({"status": "success"}) + except Exception as e: + conn.rollback() + return jsonify({"status": "error", "message": str(e)}), 500 + finally: + conn.close() + + return jsonify({"status": "error", "message": "No file uploaded or file is empty."}), 400 + +@app.route('/validate_csv_data', methods=['POST']) +def validate_csv_data(): + data = request.get_json() + validated_rows = [] + conn = get_db_connection() + cursor = conn.cursor(dictionary=True) + + for row_data in data: + plant = row_data.get('plant') + csv_id = row_data.get('csv_id') + department = row_data.get('department') + position = row_data.get('position') + extension = row_data.get('extension') + + cursor.execute("SELECT * FROM EXT WHERE plant = %s AND csv_id = %s", (plant, csv_id)) + existing_record = cursor.fetchone() + + if existing_record: + diff = {} + status = "no_change" + if existing_record['department'] != department: + diff['department'] = {'old': existing_record['department'], 'new': department} + status = "update" + if existing_record['position'] != position: + diff['position'] = {'old': existing_record['position'], 'new': position} + status = "update" + if existing_record['extension'] != extension: + diff['extension'] = {'old': existing_record['extension'], 'new': extension} + status = "update" + + validated_rows.append({ + 'original_data': row_data, + 'status': status, + 'diff': diff + }) + else: + validated_rows.append({ + 'original_data': row_data, + 'status': "new", + 'diff': {} + }) + + conn.close() + return jsonify(validated_rows) + +@app.route('/download_template') +def download_template(): + return send_from_directory('samples', 'template.csv', as_attachment=True) + + +@app.route('/add', methods=['POST']) +def add_extension(): + conn = get_db_connection() + cursor = conn.cursor() + data = request.get_json() + add_query = ("INSERT INTO EXT " + "(plant, department, csv_id, position, extension) " + "VALUES (%s, %s, %s, %s, %s)") + data_tuple = (data['plant'], data['department'], data['name'], data['position'], data['extension']) + cursor.execute(add_query, data_tuple) + conn.commit() + conn.close() + return jsonify({"status": "success"}) + +@app.route('/update/', methods=['POST']) +def update_extension(id): + conn = get_db_connection() + cursor = conn.cursor() + data = request.get_json() + update_query = ("UPDATE EXT SET plant=%s, department=%s, csv_id=%s, position=%s, extension=%s WHERE id=%s") + data_tuple = (data['plant'], data['department'], data['name'], data['position'], data['extension'], id) + cursor.execute(update_query, data_tuple) + conn.commit() + conn.close() + return jsonify({"status": "success"}) + +@app.route('/delete/', methods=['POST']) +def delete_extension(id): + conn = get_db_connection() + cursor = conn.cursor() + cursor.execute("DELETE FROM EXT WHERE id = %s", (id,)) + conn.commit() + conn.close() + return jsonify({"status": "success"}) + +if __name__ == '__main__': + app.run(debug=True) diff --git a/check_plant_data.py b/check_plant_data.py new file mode 100644 index 0000000..a45e22a --- /dev/null +++ b/check_plant_data.py @@ -0,0 +1,49 @@ + +import mysql.connector + +def get_connection_details(): + details = {} + with open('setting.txt', 'r') as f: + for line in f: + key, value = line.strip().split(':', 1) + details[key.strip()] = value.strip() + return details + +def check_plant_data(): + conn = None + try: + config = get_connection_details() + conn = mysql.connector.connect( + host=config.get('Host'), + port=config.get('Port'), + user=config.get('Username'), + password=config.get('Password'), + database=config.get('Database') + ) + cursor = conn.cursor(dictionary=True) + + cursor.execute("SELECT id, plant, department, name, extension FROM extension_data LIMIT 10") + rows = cursor.fetchall() + + if not rows: + print("No data found in extension_data table.") + return False + + print("First 10 rows of extension_data:") + for row in rows: + print(row) + if row.get('plant') is None or row.get('plant') == '': + print("'plant' column contains empty or NULL values. Data might be missing.") + return False + print("'plant' column seems to have data.") + return True + + except Exception as e: + print(f"An error occurred: {e}") + return False + finally: + if conn and conn.is_connected(): + conn.close() + +if __name__ == "__main__": + check_plant_data() diff --git a/check_plant_data_again.py b/check_plant_data_again.py new file mode 100644 index 0000000..80d9414 --- /dev/null +++ b/check_plant_data_again.py @@ -0,0 +1,53 @@ + +import mysql.connector + +def get_connection_details(): + details = {} + with open('setting.txt', 'r') as f: + for line in f: + key, value = line.strip().split(':', 1) + details[key.strip()] = value.strip() + return details + +def check_plant_data_again(): + conn = None + try: + config = get_connection_details() + conn = mysql.connector.connect( + host=config.get('Host'), + port=config.get('Port'), + user=config.get('Username'), + password=config.get('Password'), + database=config.get('Database'), + charset='utf8mb4' # Ensure consistent charset with DB table + ) + cursor = conn.cursor(dictionary=True) + + cursor.execute("SELECT id, plant, department, name, extension FROM extension_data LIMIT 20") + rows = cursor.fetchall() + + if not rows: + print("extension_data table is empty. No data to check.") + return + + print("First 20 rows of extension_data (checking 'plant' column):") + all_plants_empty = True + for row in rows: + plant_value = row.get('plant') + print(f"ID: {row.get('id')}, Plant: '{plant_value}', Department: {row.get('department')}, Name: {row.get('name')}, Extension: {row.get('extension')}") + if plant_value is not None and plant_value != '': + all_plants_empty = False + + if all_plants_empty: + print("WARNING: All 'plant' values in the first 20 rows are empty or NULL.") + else: + print("'plant' column seems to contain data (not all empty/NULL).") + + except Exception as e: + print(f"An error occurred: {e}") + finally: + if conn and conn.is_connected(): + conn.close() + +if __name__ == "__main__": + check_plant_data_again() diff --git a/check_table_schema.py b/check_table_schema.py new file mode 100644 index 0000000..ee08469 --- /dev/null +++ b/check_table_schema.py @@ -0,0 +1,44 @@ + + +import mysql.connector + +def get_connection_details(): + details = {} + with open('setting.txt', 'r') as f: + for line in f: + key, value = line.strip().split(':', 1) + details[key.strip()] = value.strip() + return details + +def check_table_schema(): + conn = None + try: + config = get_connection_details() + conn = mysql.connector.connect( + host=config.get('Host'), + port=config.get('Port'), + user=config.get('Username'), + password=config.get('Password'), + database=config.get('Database'), + charset='utf8mb4' + ) + cursor = conn.cursor() + + print("Querying schema for extension_data table...") + cursor.execute("DESCRIBE extension_data") + columns = cursor.fetchall() + + print("\nTable Schema for 'extension_data':") + for col in columns: + print(f" Column: {col[0]}, Type: {col[1]}, Null: {col[2]}, Key: {col[3]}, Default: {col[4]}, Extra: {col[5]}") + + except Exception as e: + print(f"An error occurred: {e}") + finally: + if conn and conn.is_connected(): + cursor.close() + conn.close() + +if __name__ == "__main__": + check_table_schema() + diff --git a/copy_project.py b/copy_project.py new file mode 100644 index 0000000..5019be0 --- /dev/null +++ b/copy_project.py @@ -0,0 +1,23 @@ +import shutil +import os + +try: + source_dir = '.' + destination_dir = 'ver1_ext' + + # Ensure destination directory exists and is empty + if os.path.exists(destination_dir): + shutil.rmtree(destination_dir) + os.makedirs(destination_dir) + + # Copy contents of source_dir to destination_dir + for item in os.listdir(source_dir): + s = os.path.join(source_dir, item) + d = os.path.join(destination_dir, item) + if os.path.isdir(s): + shutil.copytree(s, d, dirs_exist_ok=True) + else: + shutil.copy2(s, d) + print(f"Successfully copied contents of {source_dir} to {destination_dir}") +except Exception as e: + print(f"An error occurred during copying: {e}") \ No newline at end of file diff --git a/create_and_import_ext_table.py b/create_and_import_ext_table.py new file mode 100644 index 0000000..198ab03 --- /dev/null +++ b/create_and_import_ext_table.py @@ -0,0 +1,72 @@ +import mysql.connector +import csv +from datetime import datetime + +# Database connection details +DB_CONFIG = { + 'host': 'mysql.theaken.com', + 'port': 33306, + 'database': 'db_A024', + 'user': 'A024', + 'password': 'p1D37ddnIJCN' +} + +CSV_FILE = 'D:\\_PANJIT\\_Trae\\Lydia_practice\\ver1_ext\\files\\FINAL_整併後分機表_converted.csv' +TABLE_NAME = 'EXT' + +def create_table_and_import_data(): + try: + conn = mysql.connector.connect(**DB_CONFIG) + cursor = conn.cursor() + + # Drop table if it exists (for clean run, remove in production) + cursor.execute(f"DROP TABLE IF EXISTS {TABLE_NAME}") + print(f"Dropped table {TABLE_NAME} if it existed.") + + # Create table + create_table_sql = f""" + CREATE TABLE {TABLE_NAME} ( + id INT AUTO_INCREMENT PRIMARY KEY, + plant VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + department VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + csv_id VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + position VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + extension VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + createdate DATETIME DEFAULT CURRENT_TIMESTAMP + ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + """ + cursor.execute(create_table_sql) + print(f"Table {TABLE_NAME} created successfully.") + + # Import data from CSV + with open(CSV_FILE, 'r', encoding='Big5', errors='ignore') as f: + reader = csv.reader(f) + next(reader) # Skip header row + + insert_sql = f""" + INSERT INTO {TABLE_NAME} (plant, department, csv_id, position, extension) + VALUES (%s, %s, %s, %s, %s) + """ + + for row in reader: + # Ensure row has enough columns, handle potential empty strings + if len(row) >= 5: + # MySQL Connector/Python expects a tuple for execute() + data = (row[0], row[1], row[2], row[3], row[4]) + cursor.execute(insert_sql, data) + else: + print(f"Skipping malformed row: {row}") + + conn.commit() + print(f"Data imported successfully into {TABLE_NAME}.") + + except mysql.connector.Error as err: + print(f"Error: {err}") + finally: + if 'conn' in locals() and conn.is_connected(): + cursor.close() + conn.close() + print("MySQL connection closed.") + +if __name__ == "__main__": + create_table_and_import_data() diff --git a/create_table_from_csv.py b/create_table_from_csv.py new file mode 100644 index 0000000..de7ba37 --- /dev/null +++ b/create_table_from_csv.py @@ -0,0 +1,69 @@ +import csv +import mysql.connector + +def get_connection_details(): + details = {} + with open('setting.txt', 'r') as f: + for line in f: + key, value = line.strip().split(':', 1) + details[key.strip()] = value.strip() + return details + +def create_and_populate_table(): + try: + config = get_connection_details() + conn = mysql.connector.connect( + host=config.get('Host'), + port=config.get('Port'), + user=config.get('Username'), + password=config.get('Password'), + database=config.get('Database'), + charset='utf8mb4' # Changed to utf8mb4 for better Chinese support + ) + cursor = conn.cursor() + + # Create table (if it doesn't exist, or if it was truncated) + # Explicitly setting CHARACTER SET and COLLATE for proper Chinese display + create_table_query = """ + CREATE TABLE IF NOT EXISTS extension_data ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `plant` VARCHAR(255), + `department` VARCHAR(255), + `name` VARCHAR(255), + `position` VARCHAR(255), + `extension` VARCHAR(255) + ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci + """ + cursor.execute(create_table_query) + + # Read from CSV and insert into table + with open('files/FINAL_整併後分機表.csv', 'r', encoding='cp950') as csvfile: + reader = csv.reader(csvfile) + next(reader) # Skip header row + for row in reader: + # Ensure row has at least 5 columns (plant, department, name, position, extension) + if len(row) >= 5: + insert_query = """ + INSERT INTO extension_data (plant, department, name, position, extension) + VALUES (%s, %s, %s, %s, %s) + """ + # Map CSV columns to database columns + # CSV: [unit, department, name, position, extension, source_file, sheet] + # DB: [plant, department, name, position, extension] + data_to_insert = (row[0], row[1], row[2], row[3], row[4]) + cursor.execute(insert_query, data_to_insert) + + conn.commit() + print("Table 'extension_data' populated successfully with 'plant' data.") + + except FileNotFoundError: + print("Error: The CSV file was not found.") + except Exception as e: + print(f"An error occurred: {e}") + finally: + if 'conn' in locals() and conn.is_connected(): + cursor.close() + conn.close() + +if __name__ == "__main__": + create_and_populate_table() \ No newline at end of file diff --git a/drop_table.py b/drop_table.py new file mode 100644 index 0000000..324bc14 --- /dev/null +++ b/drop_table.py @@ -0,0 +1,36 @@ + +import mysql.connector + +def get_connection_details(): + details = {} + with open('setting.txt', 'r') as f: + for line in f: + key, value = line.strip().split(':', 1) + details[key.strip()] = value.strip() + return details + +def drop_table(): + conn = None + try: + config = get_connection_details() + conn = mysql.connector.connect( + host=config.get('Host'), + port=config.get('Port'), + user=config.get('Username'), + password=config.get('Password'), + database=config.get('Database') + ) + cursor = conn.cursor() + + cursor.execute("DROP TABLE IF EXISTS extension_data") + conn.commit() + print("Table 'extension_data' dropped successfully.") + + except Exception as e: + print(f"An error occurred: {e}") + finally: + if conn and conn.is_connected(): + conn.close() + +if __name__ == "__main__": + drop_table() diff --git a/files/FINAL_整併後分機表_converted.csv b/files/FINAL_整併後分機表_converted.csv new file mode 100644 index 0000000..676af17 --- /dev/null +++ b/files/FINAL_整併後分機表_converted.csv @@ -0,0 +1,829 @@ +plant,department,id,position,extension +sæw줽,`gz,өv,`,1201 +sæw줽,η|pƷ~鶰η|pƷ~,¦ʦ,|p,1356 +sæw줽,դu{Bդu{B,}E,`gz,1565 +sæw줽,`~Ʒ~`~Ʒ~,Bh,B,1666 +sæw줽,`gz,ӲM,`gz,1205 +sæw줽,s|pBs|pB,,B,1263 +sæw줽,դu{Bդu{B,Q,űM,1772 +sæw줽,]֫ǽ]֫,Q,D,2982 +sæw줽,s|pBʸ˺޲z|p,Ĭ{,Ҫ,1522 +sæw줽,դu{Bս,l,Ҫ,1590 +sæw줽,`~Ʒ~~Oҳ,C,`gz,1626 +sæw줽,]֫ǽ]֫,B,űM,2990 +sæw줽,`gz`gz,fB,`gz,1828 +sæw줽,s|pBʸ˺޲z|p,t,`M,1804 +sæw줽,դu{Bս,r,`u{v,1621 +sæw줽,`gz`gz_1,Lا,Ťu{v,1372 +sæw줽,s|pBʸ˺޲z|p,,űM,1262 +sæw줽,դu{Bս,\_,Uzu{v,1617 +sæw줽,`~Ʒ~Ӻ޲z,}n,Ҫ,1776 +sæw줽,ΰ]ȨƷ~鶰ΰ]ȨƷ~,Hըq,]Ȫ,2727 +sæw줽,`gz`gz_1,BQ,Du{v,1805 +sæw줽,s|pB޲z|p,Iغ,űM,1354 +sæw줽,դu{Bս,L,Uzu{v,1214 +sæw줽,`~Ʒ~Ӻ޲z,z,`u{v,1535 +sæw줽,sjZ]ȳBsjZ]ȳB,ɪ,B,2690 +sæw줽,`gz`gz_1,_,u{v,1860 +sæw줽,s|pB|Ƚ,Jĭf,űM,1261 +sæw줽,դu{Bս,ɫC,Ťu{v,1607 +sæw줽,`~Ʒ~Ӻ޲z,|,u{v,1814 +sæw줽,sjZ]ȳBsjZ]Ƚ,dU,Ҫ,2688 +sæw줽,`gz`gz_1,ª,űM,1775 +sæw줽,s|pB|p,}b,Ʋz,1251 +sæw줽,դu{Bս,L~,u{v,1607 +sæw줽,`~Ʒ~Ӻ޲z,ds,`u{v,1793 +sæw줽,sjZ]ȳBsjZ]Ƚ,ߩ,űM,2726 +sæw줽,s|pB|p,ɧg,űM,1209 +sæw줽,դu{Bս,R{,Uzu{v,1712 +sæw줽,sjZ]ȳBsjZ]Ƚ,Qa,űM,2725 +sæw줽,kȫǪkȫ,s,Ʋz,1550 +sæw줽,s|pB|p,©vw,Ҫ,1265 +sæw줽,դu{Bս,LT,u{v,1838 +sæw줽,ssyƷ~IPQC(D),²f,Z,1323 +sæw줽,sjZ]ȳBsjZ]Ƚ,Ͷ,űM,2735 +sæw줽,kȫǪkȫ,L,űM,1501 +sæw줽,s|pB|Ƚ,i,M,1245 +sæw줽,դu{Bս,},Uzu{v,1837 +sæw줽,ssyƷ~IPQC(D),\,Z,1280 +sæw줽,sjZ]ȳBsjZ]Ƚ,S,M,2721 +sæw줽,kȫǪkȫ,ic,`u{v,1279 +sæw줽,s|pB|p,xֵ,M,1264 +sæw줽,դu{B]ƽ(D),h,Ҫ,1370 +sæw줽,ssyƷ~FQC(D),²ӫW,Z,1363 +sæw줽,kȫǪkȫ,dR,M,1346 +sæw줽,դu{B]ƽ(N),η,Ҫ,1714 +sæw줽,`~Ʒ~IQC(A),θ,Z,1733 +sæw줽,η|pƷ~鶰η|pƷ~,¦ʦ,|p,2777 +sæw줽,kȫǪkȫ,Ry,űM,1278 +sæw줽,TƷ~TƷ~,dQ,MװƲz,1537 +sæw줽,դu{B]ƽ(D),ɪ,޳N,1302 +sæw줽,`~Ʒ~IQC(A),,@~,1734 +sæw줽,η|pBΦXֳ,h@,`M,2724 +sæw줽,դu{Bs~ɤJ,ŭ,Ʋz,1835 +sæw줽,nannan,IQCu@,,1367 +sæw줽,η|pBΦXֳ,ֶ,űM,2689 +sæw줽,ΤHFƷ~鶰ΤHFƷ~,h,`gz,1777 +sæw줽,դu{Bs~ɤJ,౬,`u{v,1843 +sæw줽,`~Ʒ~IQC(A),iεa,@~,1735 +sæw줽,ΤHFƷ~۶ҥγ,T,Ʋz,1728 +sæw줽,귽X~B~u{(APD),Q@,u{v,1509 +sæw줽,դu{Bs~ɤJ,L,Ťu{v,1743 +sæw줽,`~Ʒ~IQC(A),Mq,@~,1723 +sæw줽,άoB޳N䴩,P妨,Ʋz,2432 +sæw줽,ΤHFƷ~۶ҥγ,^a\,M,1364 +sæw줽,դu{Bs~ɤJ,YF,Ťu{v,1781 +sæw줽,nannan,IQCu@,,1625 +sæw줽,άoB޳N䴩,§,u{v,2424 +sæw줽,ΤHFƷ~~S޲z,κѦn,Ҫ,1217 +sæw줽,~Ʒ~B~u{(MPD),}@,Ʋz,1510 +sæw줽,դu{Bs~ɤJ,w,u{v,1842 +sæw줽,nannan,IQCu@,,1724 +sæw줽,άoB޳N䴩,fg,M,2431 +sæw줽,ΤHFƷ~~S޲z,,űM,1623 +sæw줽,~Ʒ~B~޲z(MPD),L,Du{v,1517 +sæw줽,դu{Bs~ɤJ,Lb,M,1192 +sæw줽,`~Ʒ~饢ĤR,d\,Ҫ,1556 +sæw줽,ΤHFƷ~~S޲z,q,M,1343 +sæw줽,~Ʒ~B~u{(MPD),d@,Ťu{v,1210 +sæw줽,դu{Bs~ɤJ,is,M,1538 +sæw줽,`~Ʒ~饢ĤR,Τ,Ťu{v,1556 +sæw줽,y޳NAȳBSʴճ,f,`gz,2871 +sæw줽,ΤHFƷ~F`Ⱥ޲z,l,gz,1213 +sæw줽,~Ʒ~B~u{(MPD),Ba,u{v,1831 +sæw줽,`~Ʒ~饢ĤR,,Uzu{v,1545 +sæw줽,y޳NAȳBSʴս,{,Ҫ,2873 +sæw줽,ΤHFƷ~F`Ⱥ޲z,?,űM,1792 +sæw줽,`~Ʒ~饢ĤR,ۮ,Uzu{v,1545 +sæw줽,y޳NAȳBSʴճ,X,Ťu{v,2875 +sæw줽,ΤHFƷ~F`Ⱥ޲z,,űM,1767 +sæw줽,ssyƷ~驣ssyƷ~,Pxw,`gz,1656 +sæw줽,s{u{Bs{u{B,,`gz,1233 +sæw줽,`~Ʒ~饢ĤR,,u{v,1513 +sæw줽,y޳NAȳBSʴս,d,Uzu{v,2875 +sæw줽,ΤHFƷ~F`Ⱥ޲z,P,űM,1817 +sæw줽,ssyƷ~驣ssyƷ~,?,B,1827 +sæw줽,s{u{Bs{u{@,F,gz,1797 +sæw줽,`~Ʒ~饢ĤR,L,u{v,1513 +sæw줽,y޳NAȳBSʴս,Cؽ,Ťu{v,2875 +sæw줽,ΤHFƷ~F`Ⱥ޲z,aq,Uz,1190 +sæw줽,ssyƷ~驣ssyƷ~,O,űM,1573 +sæw줽,s{u{Bs{u{G,ؾ,gz,1193 +sæw줽,`~Ʒ~饢ĤR,δ,u{v,1738 +sæw줽,y޳NAȳBSʴս,m,Uzu{v,2872 +sæw줽,ΤHFƷ~Vmoi,p,M,1727 +sæw줽,s{u{BλPZ,wF,Ҫ,1780 +sæw줽,`~Ʒ~饢ĤR,ˢ,u{v,1619 +sæw줽,y޳NAȳBSʴս,dǵ,u{v,2872 +sæw줽,tȻPwú޲zBwä,s,Ҫ,1519 +sæw줽,s{u{BλPZ,Lɶv,`u{v,1247 +sæw줽,y޳NAȳBSʴս,},`u{v,2872 +sæw줽,TGBTGB,^t,gz,1274 +sæw줽,tȻPwú޲zBwä,_,`u{v,1253 +sæw줽,s{u{BλPZ,BD,`u{v,1780 +sæw줽,`~Ʒ~HʫOҽ,Ĭశ,Ҫ,1366 +sæw줽,y޳NAȳBSʴս,i,u{v,2874 +sæw줽,T@BtκAȳ,کvM,Ҫ,1337 +sæw줽,tȻPwú޲zBwä,Y_,M,1250 +sæw줽,s{u{BλPZ,cӭ,`u{v,1609 +sæw줽,`~Ʒ~HʫOҽ,PW,`u{v,1739 +sæw줽,y޳NAȳBSʴս,d౫a,Ťu{v,2874 +sæw줽,T@BtκAȳ,Ps,`u{v,1353 +sæw줽,tȻPwú޲zBwä,\ã,M,1520 +sæw줽,s{u{BλPZ,²R,Ťu{v,1748 +sæw줽,`~Ʒ~HʫOҽ,dة,Uzu{v,1825 +sæw줽,y޳NAȳBSʴս,©F,Ťu{v,2874 +sæw줽,T@BtκAȳ,R,`u{v,1355 +sæw줽,tȻPwú޲zBwä,,Ťu{v,1242 +sæw줽,s{u{BWPZu,Re,Ťu{v,1580 +sæw줽,`~Ʒ~Hʹ,y,Z,1557 +sæw줽,T@BtκAȳ,ft,Ťu{v,1844 +sæw줽,tȻPwú޲zBwä,Ŧ,u{v,1390 +sæw줽,s{u{BWPZu,Ca,Ťu{v,1580 +sæw줽,`~Ʒ~HʫOҽ,Τ,Ťu{v,1557 +sæw줽,TtTt,ϩ,޳NU,2501 +sæw줽,T@BtκAȳ,F,u{v,1864 +sæw줽,tȻPwú޲zBwä,Ĭ~,u{v,1919 +sæw줽,s{u{BWPZu,B,`u{v,1580 +sæw줽,`~Ʒ~HʫOҽ,jQ,u{v,1557 +sæw줽,TtTt,dYa,M,2849 +sæw줽,T@BqXsy,\g,Ҫ,1321 +sæw줽,nannan,d,,1688 +sæw줽,s{u{BWPZu,h,`u{v,1322 +sæw줽,`~Ʒ~HʫOҽ,Ůa,u{v,1737 +sæw줽,Tttȳ(Fab3),d,gz,2812 +sæw줽,T@BqXsy,K{,`u{v,1392 +sæw줽,s{u{BWPZu,,`u{v,1322 +sæw줽,`~Ʒ~HʫOҽ,i,u{v,1570 +sæw줽,Tttȳ(Fab3),LX޳,`u{v,2802 +sæw줽,T@BqXsy,Ӱ,Ťu{v,1275 +sæw줽,tȻPwú޲zBtȻPwú޲zB,ģP,B,1168 +sæw줽,s{u{BWPZu,²M,u{v,1575 +sæw줽,`~Ʒ~HʫOҽ,\a,u{v,1558 +sæw줽,Tttȳ(Fab3),E,Ťu{v,2664 +sæw줽,T@BqXsy,d~,Ťu{v,1277 +sæw줽,tȻPwú޲zBtȻPwú޲zB,ξ,Ťu{v,1284 +sæw줽,s{u{BWPZu,Z,u{v,1289 +sæw줽,`~Ʒ~Hʹ,Rp,@~,1558 +sæw줽,Ttsy,it,Ʋz,2816 +sæw줽,T@BqXsy,a,Ťu{v,1371 +sæw줽,s{u{Bq,F,Ҫ,1783 +sæw줽,Ttsy,ǥ,Ҫ,2817 +sæw줽,T@BqXsy,,u{v,1809 +sæw줽,tȻPwú޲zBtȳ,iF,gz,1303 +sæw줽,s{u{Bq,öi,Ťu{v,1779 +sæw줽,`~Ʒ~~tΤΫȤu{X,f,gz,1384 +sæw줽,Tt~賡,Ĭ{,gz,2729 +sæw줽,T@BΨtγ,ӳ,Ҫ,1532 +sæw줽,tȻPwú޲zBtȽ,x̾,Ҫ,1578 +sæw줽,s{u{Bq,,Ťu{v,1312 +sæw줽,`~Ʒ~~tν,δ,Ťu{v,1801 +sæw줽,Tt~賡,鶮f,Ťu{v,2720 +sæw줽,T@BΨtγ,,`u{v,1341 +sæw줽,tȻPwú޲zBtȽ,J@?,`u{v,1711 +sæw줽,s{u{Bq,lN,u{v,1312 +sæw줽,`~Ʒ~Ȥu{X,|w,`u{v,1812 +sæw줽,Tt~賡,L©y,u{v,2710 +sæw줽,T@BΨtγ,κѭs,Ťu{v,1223 +sæw줽,tȻPwú޲zBtȽ,ݨ},u{v,1252 +sæw줽,s{u{B,d|I,Ҫ,1310 +sæw줽,`~Ʒ~~tν,¸¸,u{v,1824 +sæw줽,Tt~賡,ĬX,@~,2718 +sæw줽,T@BΨtγ,,Ťu{v,1231 +sæw줽,tȻPwú޲zBtȽ,ز,u{v,1710 +sæw줽,s{u{B,ii,Ťu{v,1311 +sæw줽,`~Ʒ~Ȥu{X,ɥ,u{v,1383 +sæw줽,s{u{Bu{G,,Ʋz,2836 +sæw줽,T@BΨtγ,Yޱ,Ťu{v,1248 +sæw줽,s{u{Bs{u{B,D,Uz,1385 +sæw줽,`~Ʒ~󤤤,S,Ťu{v,1628 +sæw줽,s{u{Bu{G,aM,Du{v,2842 +sæw줽,T@BΨtγ,,Ťu{v,1389 +sæw줽,`줽DZM׺޲z,Q,gz,1239 +sæw줽,`~Ʒ~󤤤,sf,u{v,1846 +sæw줽,s{u{Bu{G,L|,`u{v,2846 +sæw줽,T@BΨtγ,,Ťu{v,1791 +sæw줽,`줽Ǥu~u{,\,Ʋz,1393 +sæw줽,άoBo,x,gz,1834 +sæw줽,`~Ʒ~oi,{,u{v,1285 +sæw줽,s{u{Bu{G,ںa,`u{v,2847 +sæw줽,wʤpոwʽ,,Ҫ,1516 +sæw줽,`줽Ǥu~u{,յ,Ҫ,1745 +sæw줽,άoB]p,ضv,Ҫ,1855 +sæw줽,`~Ʒ~oi,,u{v,1546 +sæw줽,s{u{Bu{G,v,`u{v,2836 +sæw줽,nannan,]?,,1799 +sæw줽,`줽Ǥu~u{,,`u{v,1794 +sæw줽,άoBʸ˧޳N,HN,Ҫ,1839 +sæw줽,s{u{Bu{G,LN,u{v,2847 +sæw줽,`줽ǨtξX,ºֶ,Ҫ,1732 +sæw줽,άoBʸ˧޳N,},Du{v,1840 +sæw줽,`~Ʒ~Ȥ~޲z,,gz,1540 +sæw줽,s{u{Bu{T,Hͼw,gz,2818 +sæw줽,`줽ǨtξX,,u{v,1818 +sæw줽,άoBʸ˧޳N,Bl,`u{v,1841 +sæw줽,`~Ʒ~Ȥ~u{,ӥ,Ʋz,1508 +sæw줽,s{u{Bu{T,j,`u{v,2811 +sæw줽,jذϾPƷ~B~Ȥ(TW II),P,Ʋz,1229 +sæw줽,`줽ǨtξX,N@,u{v,1820 +sæw줽,άoBʸ˧޳N,dF,Ťu{v,1857 +sæw줽,`~Ʒ~Ȥ~u{,ۤs,`u{v,1380 +sæw줽,s{u{Bu{T,va,`u{v,2837 +sæw줽,jذϾPƷ~B~Ȥ(TW I),q,Ҫ,1308 +sæw줽,`줽ҥ޲zp,¤夶,Ʋz,1566 +sæw줽,άoB]p,?,u{v,1539 +sæw줽,`~Ʒ~Ȥ~u{,Gt,`u{v,1613 +sæw줽,s{u{Bu{T,ا,Du{v,2838 +sæw줽,jذϾPƷ~B~Ȥ(TW I),@,űM,1222 +sæw줽,`줽ҥ޲zp,ִ@,Ťu{v,1850 +sæw줽,άoBʸ˧޳N,§,u{v,1856 +sæw줽,`~Ʒ~Ȥ~u{,z,Ťu{v,1318 +sæw줽,s{u{Bu{T,LQI,Du{v,2801 +sæw줽,jذϾPƷ~B~Ȥ(TW II),QS,M,1237 +sæw줽,`~Ʒ~~tν,G,ƽҪ,1836 +sæw줽,άoB]p,Jsf,M,1539 +sæw줽,`~Ʒ~Ȥ~u{,Lq,Uzu{v,1504 +sæw줽,s{u{Bu{T,ft,Du{v,2810 +sæw줽,jذϾPƷ~B~Ȥ(TW II),}Ц|,Uz,1249 +sæw줽,`~Ʒ~Ȥ~u{,¨j,u{v,1507 +sæw줽,s{u{Bu{T,PӾ,Du{v,2807 +sæw줽,jذϾPƷ~B~Ȥ(TW II),BR,Uz,1305 +sæw줽,]Ƥu{B]Ƥu{B,q,`gz,1588 +sæw줽,ͲBͲB,dz,`gz,1268 +sæw줽,`~Ʒ~Ȥ~u{,dݨ,u{v,1506 +sæw줽,s{u{Bu{T,L,u{v,2840 +sæw줽,jذϾPƷ~B~ȤT(TW II),,Uz,1813 +sæw줽,]Ƥu{B]Ƥ@,P,Ʋz,1851 +sæw줽,ͲBͲB,^,M,1320 +sæw줽,`~Ʒ~~u{,¬F,ƽҪ,1561 +sæw줽,s{u{Bu{T,ɯE,u{v,2838 +sæw줽,jذϾPƷ~B~ȤG(TW II),J,Uz,1862 +sæw줽,]Ƥu{B]Ƥ@,Ϊ,Ťu{v,1759 +sæw줽,ͲBͲB,[,Ťu{v,1858 +sæw줽,`~Ʒ~~u{,v,Ťu{v,1505 +sæw줽,s{u{Bs{X(Fab3),,`gz,2809 +sæw줽,jذϾPƷ~B~ȤT(TW II),{,Uz,1328 +sæw줽,]Ƥu{B]Ƥ@,,Ťu{v,1319 +sæw줽,ͲB]ZͲ޲z,d,Ҫ,1756 +sæw줽,`~Ʒ~~u{,TF,u{v,1562 +sæw줽,s{u{Bs{X(Fab3),Yy,Du{v,2803 +sæw줽,jذϾPƷ~BHHMײ,xQ,űM,1313 +sæw줽,]Ƥu{B]Ƥ@(D),E,ƽҪ,1703 +sæw줽,`~Ʒ~~u{,vqâ,u{v,1569 +sæw줽,s{u{Bs{X(Fab3),L,Du{v,2845 +sæw줽,jذϾPƷ~BHHMײ,hD,Uz,1314 +sæw줽,]Ƥu{B]Ƥ@(D),Ĭ,`u{v,1315 +sæw줽,ͲBͲ@,Ĭ,M,1331 +sæw줽,s{u{Bs{X(Fab3),ŬR,u{v,2849 +sæw줽,]Ƥu{B]ƤG,Ǫû,Ʋz,1760 +sæw줽,ͲBͲ@,F,Ҫ,1269 +sæw줽,`~Ʒ~ʴ~]~޲z,Hg,`gz,1329 +sæw줽,yP[~Ȥ䴩ByP[~Ȥ䴩B,,`gz,1388 +sæw줽,]Ƥu{B]ƤG(D),iq,ƽҪ,1758 +sæw줽,ͲBͲ@,¦,ժ,1706 +sæw줽,`~Ʒ~ʴ~]~޲z,ãz,Ҫ,1515 +sæw줽,sШƷ~귽޲z,D,gz,2820 +sæw줽,yP[~Ȥ䴩BP,L,B,1267 +sæw줽,]Ƥu{B]ƤT(D),ĬT,`u{v,1345 +sæw줽,ͲBͲ@,T,ժ,1705 +sæw줽,`~Ʒ~ʴ~]~޲z,Gζ,Ťu{v,1357 +sæw줽,sШƷ~귽޲z,l,űM,2821 +sæw줽,yP[~Ȥ䴩BPs,LQa,űM,1511 +sæw줽,ͲBͲ@,,ժ,1289 +sæw줽,`~Ʒ~ʴ~]~޲z,޳,Ťu{v,1811 +sæw줽,BB,Jz,B,1833 +sæw줽,ͲBI(D),Hɵ,Z,1332 +sæw줽,jZæw / [Z81ϤX,Jz/۵/x,,2783 +sæw줽,yP[~Ȥ䴩B~ȥͺ޳,i,`gz,1246 +sæw줽,ͲBZA(D),Gq,Z,1334 +sæw줽,`~Ʒ~鲣~~޲z,q,Ʋz,1541 +sæw줽,jZs82ϤX,Ps/کvM/F,,1353 +sæw줽,yP[~Ȥ䴩B~ȥͺ޽,dλ,Ҫ,1254 +sæw줽,Bʳ,QS,`gz,1243 +sæw줽,ͲBZC(D),t,ƯZ,1288 +sæw줽,`~Ʒ~ܧ޲z,q,Ҫ,1374 +sæw줽,jZs83ϤX,ùa,,6028 +sæw줽,yP[~Ȥ䴩B~ȥͺ޽,Lڻ,Ҫ,1347 +sæw줽,BʤG,Lq,Ҫ,1618 +sæw줽,ͲBͲG,,Ҫ,1612 +sæw줽,`~Ʒ~s~~޲z,^,Ťu{v,1381 +sæw줽,jZ85ϤX,}R_,Sandy/}Remy,111 +sæw줽,yP[~Ȥ䴩B~ȥͺ޽,ػT,űM,1523 +sæw줽,Bʤ@,{D,űM,1531 +sæw줽,ͲBͲG,T,ժ,1627 +sæw줽,`~Ʒ~s~~޲z,q^,u{v,1605 +sæw줽,jZ}{86ϤX,/N§,,7710 +sæw줽,yP[~Ȥ䴩B~ȥͺ޽,,M,1227 +sæw줽,Bʤ@,{,M,1224 +sæw줽,ͲBͲG,nq,ժ,1638 +sæw줽,`~Ʒ~ܧ޲z,iK,u{v,1773 +sæw줽,jZL87ϤX,/Z,,6155 +sæw줽,yP[~Ȥ䴩B~ȥͺ޽,dg,M,1359 +sæw줽,Bʤ@,ȵ,M,1829 +sæw줽,ͲBͲG,L,ժ,1815 +sæw줽,`~Ʒ~ܧ޲z,A,u{v,1615 +sæw줽,Ĭ{s88ϤX,}p,,6662 +sæw줽,yP[~Ȥ䴩B~ȥͺ޽,Nd,M,1234 +sæw줽,BʤG,dA,űM,1751 +sæw줽,ͲBͲG,\,ժ,1704 +sæw줽,`~Ʒ~Ȥ䴩u{,@,`u{v,1853 +sæw줽,jZO_89ϤX,в,,9 +sæw줽,yP[~Ȥ䴩B~ȥͺ޽,,Uz,1255 +sæw줽,ͲBͲG,T,ժ,1528 +sæw줽,`~Ʒ~Ȥ䴩u{,m,u{v,1736 +sæw줽,L``q77ϤX,fb,,3908 +sæw줽,yP[~Ȥ䴩B~ȥͺ޽,L{{,Uz,1524 +sæw줽,BʤG,BF,M,1358 +sæw줽,ͲB(D),d\,Z,1574 +sæw줽,`~Ʒ~Ȥ䴩u{,L|߬,u{v,1769 +sæw줽,yP[~Ȥ䴩By&,,M,1220 +sæw줽,BʤG,й,M,1847 +sæw줽,ͲBZD(D),Gɧg,Z,1533 +sæw줽,`~Ʒ~Ȥ䴩u{,LŻ,u{v,1790 +sæw줽,yP[~Ȥ䴩By&,zR,M,1235 +sæw줽,ͲBZD(D),EfO,Z,1259 +sæw줽,`~Ʒ~Ȥ䴩u{,űR,u{v,1778 +sæw줽,yP[~Ȥ䴩By&,x౪,M,1344 +sæw줽,BƱ,࿳t,Ҫ,1386 +sæw줽,ͲBZE(D),dA,Z,1377 +sæw줽,`~Ʒ~˫~䴩,\ɪ,Z,1324 +sæw줽,yP[~Ȥ䴩By&,صX,Uz,1785 +sæw줽,BƱ,G,űM,1770 +sæw줽,ͲBZE(D),Lf@,Z,1530 +sæw줽,`~Ʒ~˫~䴩,GKO,@~,1719 +sæw줽,yP[~Ȥ䴩BMOSFETʳ,f̯,űM,1526 +sæw줽,BƱ,ڨq,űM,1750 +sæw줽,BƱ,[,M,1807 +sæw줽,ͲBͲG,ɬz,gz,1304 +sæw줽,`~Ʒ~鴹Ӻ޲z,[,Ťu{v,1606 +sæw줽,~PƷ~ByϫȤ޲z,,Ʋz,1529 +sæw줽,BƱ,߿v,M,1747 +sæw줽,`~Ʒ~鴹Ӻ޲z,Q,`u{v,1191 +sæw줽,~PƷ~ByϫȤ޲z,d,Ʋz,1579 +sæw줽,B쪫ƭ,],Z,1317 +sæw줽,ͲBͲT,\ӵM,Ҫ,1810 +sæw줽,`~Ʒ~鴹Ӻ޲z,Φt,Ťu{v,1585 +sæw줽,B쪫ƭ,\ʮ,@~,1281 +sæw줽,ͲBͲT,,ժ,1306 +sæw줽,`~Ʒ~鴹Ӻ޲z,ȫ,Ťu{v,1564 +sæw줽,~PƷ~B饻Ϻ[Nu~ȳ,p,gz,1208 +sæw줽,ͲBͲT,a,ժ,1789 +sæw줽,~PƷ~B饻,y[,M,1219 +sæw줽,BͲ,L,Ҫ,1755 +sæw줽,ͲBͲT,@,ժ,1789 +sæw줽,~PƷ~B饻,L{,Uz,1373 +sæw줽,BͲ,B,űM,1754 +sæw줽,ͲBͲ|,\s,ժ,1789 +sæw줽,euë1290,uë,,1600 +sæw줽,~PƷ~BNu,,M,1629 +sæw줽,BͲ,sR,M,1803 +sæw줽,ͲB(D),d,Z,1852 +sæw줽,\U1291,d,,1520 +sæw줽,BͲ,ڪ,M,1716 +sæw줽,ͲB(D),Ӷ,Z,1287 +sæw줽,~PƷ~BڨȰϷ~ȳ,ſ,`gz,1286 +sæw줽,BͲ,@S,M,1525 +sæw줽,ͲB(D),ս,Z,1395 +sæw줽,~PƷ~Bn,Ĭ,ƽҪ,1260 +sæw줽,BͲƵ{,ɴ@,Ҫ,1240 +sæw줽,ͲBq(D),LRW,Z,1340 +sæw줽,Aɤ@ӲĤ@|ij (A1)1270,B2Fp|ij,,1396 +sæw줽,~PƷ~Bn,ʹ,Uz,1326 +sæw줽,BͲƵ{,],M,1387 +sæw줽,Aɤ@ӲĤG|ij (A2)1271,B2Fj|ij,,1397 +sæw줽,~PƷ~BF,b,M,1212 +sæw줽,BͲƵ{,@,M,1586 +sæw줽,ͲBͲ|,t,Ҫ,1336 +sæw줽,O|ij1766,B4Fp|ij,,1548 +sæw줽,~PƷ~BF,,M,1226 +sæw줽,BͲƵ{,f,M,1636 +sæw줽,ͲBͲ|,_Ҥ,ժ,1336 +sæw줽,B3F@η|ij1372,B4FШ|Vm,,1398 +sæw줽,~PƷ~BF,LY,Uz,1800 +sæw줽,BͲƵ{,i,Uz,1236 +sæw줽,ͲBh(D),,Z,1352 +sæw줽,~PƷ~Bڬw,LN[,Ҫ,1521 +sæw줽,BͲƵ{,z,M,1784 +sæw줽,ͲBs}(D),ά,Z,1333 +sæw줽,A1Fh\ưȾǯu07-621-3129,B3Fh\ưȾǯu,,7 +sæw줽,~PƷ~Bڬw,iѶ,M,1542 +sæw줽,BͲƵ{,{,M,1765 +sæw줽,ͲBs}(D),´fu,Z,1283 +sæw줽,A1Fh\ưȾǯu07-621-3532,ǯu,,7 +sæw줽,~PƷ~Bڬw,Ĭa,űM,1221 +sæw줽,~PƷ~BڨȰϷ~ȳ,۲N,Uz,1620 +sæw줽,ͲBͲ,y,Ҫ,1339 +sæw줽,B~,²Q,Z,1375 +sæw줽,ͲBͲ,iqp,ժ,1351 +sæw줽,o1539,pTk(A),,1334 +sæw줽,10F \U2945,æw-6F,,2600 +sæw줽,B~,Lqz,ƯZ,1362 +sæw줽,ͲBͲ,PM,ժ,1351 +sæw줽,tȻPwäu@1300,pTk(B),,1215 +sæw줽,`2000,3F,PVD,2318 +sæw줽,B~,LοP,ƯZ,1362 +sæw줽,ͲBͲ,,ժ,1351 +sæw줽,SEM1551,pTk(C),,1288 +sæw줽,æw-uë2001,PVDװ,,2857 +sæw줽,~PƷ~BwϷ~ȳ,@ģ,M,1549 +sæw줽,ͲBͲ,i²Ӯ,ժ,1786 +sæw줽,1287 / 1395 / 1852,pTk(D),,1259 +sæw줽,줽ǧ2852,Dry,etch,2860 +sæw줽,~PƷ~BwϷ~ȳ,d,M,1610 +sæw줽,B~귽޲z,z,Ʋz,1349 +sæw줽,ͲB~(D),dK,Z,1325 +sæw줽,Ls}1283 / 1333,pTk(E),,1530 +sæw줽,tȰϧ2866,Stand,clean,2863 +sæw줽,~PƷ~BwϷ~ȳ,Lʹ,Uz,1309 +sæw줽,B~귽޲z,޳},M,1631 +sæw줽,ͲBTMTT(D),?,Z,1717 +sæw줽,~˯1325 / 1330,FLk/WiM~,,1377 +sæw줽,tϪƫ2867,Post,clean,2861 +sæw줽,~PƷ~BwϷ~ȳ,m,Uz,1865 +sæw줽,ͲBTMTT(N),dR,Z,1342 +sæw줽,TMTT줽1717 / 1214,I/,,1332 +sæw줽,tϳƫ~2868,9F,CP,2945 +sæw줽,ssyƷ~驣s~ި,R,Ʋz,1614 +sæw줽,nannan,TMTT줽,,1214 +sæw줽,TMTT 1342,h,,1352 +sæw줽,2853 / 2850,8Fư,,2869 +sæw줽,~PƷ~BϷ~ȳ-,z,Ʋz,1228 +sæw줽,ssyƷ~ʸ˫~ި,,Uzu{v,1752 +sæw줽,j1340,q᯸/p,,1616 +sæw줽,װ2854,8FŽհ,,2870 +sæw줽,~PƷ~BϷ~ȳ-,R,űM,1307 +sæw줽,ssyƷ~ʸ˫~ި,ߩ,ժ,1577 +sæw줽,RTP2856,9Fѻİ,,2950 +sæw줽,~PƷ~BϷ~ȳ-,Ŷh,űM,1360 +sæw줽,ssyƷ~ʸ˫~ި,t,ƽҪ,1761 +sæw줽,lӤJ2859,7FQˤf,,2851 +sæw줽,~PƷ~BϷ~ȳ-,z,M,1225 +sæw줽,ssyƷ~~ިX,ª,Ťu{v,1861 +sæw줽,ThinFilm2855,U,,2864 +sæw줽,~PƷ~BϷ~ȳ-,Jy,űM,1266 +sæw줽,ssyƷ~ʸ˫~ި,Ӥs,u{v,1581 +sæw줽,lް2858,Uװ,,2865 +sæw줽,~PƷ~BϷ~ȳ-,iO,Uz,1527 +sæw줽,nannan,9F,OQC,2813 +sæw줽,~PƷ~BϷ~ȳ-,H̿,Uz,1571 +sæw줽,y޳NAȳBSʴճ,HɵX,u{v,1218 +jZ,,}R_ (SANDY),,111 +jZ,,} (REMY),,108 +jZ,,dB (ANNY),,106 +jZ,,@ (KEN),,102 +jZ,,Hzg (TIFFANY),,103 +jZ,,|p,,109 +jZ,,,,107 +jZ,,[,,118 +jZ,,ܮw,,112 +jZ,,|ij,,101 +L``줽,Ȥ,,,3311 +L``줽,Ȥ,Jy,,3312 +L``줽,Ȥ,,,3316 +L``줽,Ȥ,J,,3519 +L``줽,Ȥ,,,3520 +L``줽,gPӺ޲z,ù౤,,3411 +L``줽,gPӺ޲z,Jִ,,3416 +L``줽,gPӺ޲z,A,,3417 +L``줽,gPӺ޲z,GR,,3418 +L``줽,gPӺ޲z,^L,,3420 +L``줽,HHMײ,j,,3616 +L``줽,HHMײ,x,,3617 +L``줽,ȪA/~O,U},,3112 +L``줽,ȪA/~O,di,,3113 +L``줽,ȪA/~O,c,,3114 +L``줽,ȪA/~O,a,,3118 +L``줽,~Τu{,sP,,3115 +L``줽,~Τu{,[Z,,3117 +L``줽,~Τu{,JA,,3119 +L``줽,~ȦF,Ĭɨq,,3217 +L``줽,~ȦF,K,,3317 +L``줽,~ȦF,,,3318 +L``줽,~ȦF,HY,,3319 +L``줽,~ȦF,BR,,3320 +L``줽,~ȦF,}R,,3412 +L``줽,~ȦF,}AA,,3413 +L``줽,~ȦF,Y맰,,3414 +L``줽,~ȦF,ɿP,,3415 +L``줽,~ȦF,CF,,3512 +L``줽,~ȦF,P,,3513 +L``줽,~ȦF,xA,,3514 +L``줽,~ȦF,P,,3515 +L``줽,˫~,p,,3619 +L``줽,~ȥͺ޽,J,,3211 +L``줽,~ȥͺ޽,HYY,,3213 +L``줽,~ȥͺ޽,\fR,,3216 +L``줽,~ȥͺ޽,ip,,3219 +L``줽,]| / F / `,BT,,3904 +L``줽,]| / F / `,ɥ,,3906 +L``줽,]| / F / `,|ܻT,,3907 +L``줽,]| / F / `,fb,,3908 +L``줽,Ϸ~ȳ,ɬx,`B,3677 +L``줽,HHMײ,d,gz,3600 +L``줽,ϥԲ,󤻤,Ʋz,3214 +L``줽,Ȥ,B,Ʋz,3313 +L``줽,gPӺ޲z,,gz,3400 +L``줽,gPӺ޲z,B,D,3419 +L``줽,Global Account,is,D,3314 +L``줽,~Τu{,廷,Ʋz,3116 +L``줽,~ȥͺ޽,P,Ʋz,3200 +L``줽,~ȦF,A],Ʋz,3220 +L``줽,޲zB,if,`gz,3901 +L``줽,|p,శj,Ʋz,3620 +L``줽,ܺ޽,,D,3993 +L``줽,` / `gz 줽,,,3555 +L``줽,j|ij,,,3991 +L``줽,p|ij,,,3992 +L``줽,`,T,,3900 +L줽,,jt,,6669 +L줽,sy,U,űM,6527 +L줽,,,`B,6668 +L줽,ͲBͲB,ĬR,,6143 +L줽,,,`B(),6668 +L줽,sy@δ,ڧ,Ҫ,6081 +L줽,,ì,B,6901 +L줽,,ì,B(),6901 +L줽,SMD k,ii,`Ҫ,6050 +L줽,,تZ,B,6018 +L줽,,ģ,B,6599 +L줽,,崼,`gz,6510 +L줽,,y,Ʋz,6582 +L줽,SMD TMTT,s,Ҫ,6572 +L줽,,,Ʋz,6549 +L줽,,Ui,PM&IEgz,6152 +L줽,,S,pe,6535 +L줽,,-,,6536 +L줽,,dǧL,gz,6292 +L줽,,Lg,`Ҫ,6811 +L줽,,ۤ,Ʋz,6138 +L줽,,BD,gz,6201 +L줽,,LtB,,6777 +L줽,,Lt,B(),6777 +L줽,,CBvɵ,s}-Z,6065 +L줽,,ʷs,gz,6512 +L줽,s}-ERP,i,,6064 +L줽,,ռst,Ʋz,6507 +L줽,,z,q~]-Z,6545 +L줽,,D[,gz,6598 +L줽,,Hvgz,,6537 +L줽,TO/Ӷ k,O,`Ҫ,6056 +L줽,,d,Ʋz,6585 +L줽,,Z,Ʋz,6355 +L줽,TO/Ӷ TMTT,ζh,Ҫ,6548 +L줽,تFϷ~ȳ,^,gz,6102 +L줽,,BSBڡBiBå,Z,6548 +L줽,jȤMײ,iѸ۸gz,,6180 +L줽,,R,pe,6413 +L줽,~Τu{,B,Ʋz,6119 +L줽,syT,\,Ҫ,6057 +L줽,~Τu{,,`gz,6101 +L줽,~Τu{,,Ʋz,6801 +L줽,귽}o,i,Ʋz,6517 +L줽,MOS ,BW,Ҫ,6817 +L줽,~}o,/,,6815 +L줽,TMTT-MOS,vߩBOP,Z,6816 +L줽,BRIDGE/AXIAL TMTT,BRڽҪ,,6052 +L줽,LWuxi,ù,,6807 +L줽,H,~,,6128 +L줽,TMTT-BRIDGE/AXIAL,ڬBK,Z,6538 +L줽,H,Ҷ,,6529 +L줽,,R,pe,6413 +L줽,H,۸u,,6130 +L줽,o}o,HC,`Ҫ,6513 +L줽,`Ƚ,`Ƚ,,6139 +L줽,,dšBRSB|QSB,,6578 +L줽,`Ƚ,eO/`,,6001 +L줽,ʸ˶}o,ռst,Ʋz(),6507 +L줽,`Ƚ,`,,6000 +L줽,,Bjj,,6500 +L줽,Voi&Ž,V,,6166 +L줽,,,,6066 +L줽,,ͱ/t,,6500 +L줽,~,,Ҫ,6148 +L줽,T,n,,6155 +L줽,˫~,ضBiBHRR B,,6515 +L줽,u{/SMD-AU/SMAF-C,,,6511 +L줽,T,w/w,,6293 +L줽,SMD/AXIAL/SMA-C MAX,}h,,6519 +L줽,ͺ޽,ͺ޽,,6159 +L줽,BRIDGE,T,`Ҫ(N),6685 +L줽,ͺ޽,SMC,,6159 +L줽,TO/Solar,T,`Ҫ,6685 +L줽,ͺ޽,~,,6203 +L줽,ͺ޽,R-1/1A/2A,,6157 +L줽,MOS-AU,Bإ,,6290 +L줽,ͺ޽,Xf,,6157 +L줽,/q,Φt,,6685 +L줽,,,,6163 +L줽,,TVStC,,6121 +L줽,L~u{~u{ҫ~u{,d,Ʋz,6585 +L줽,,ɭ,,6085 +L줽,MQE,AB,,6075 +L줽,,쪫,,6131 +L줽,,ΤUSKYtC,,6176 +L줽,QC,,,6252 +L줽,,ΤUGPPtC,,6172 +L줽,ܺ޽,ܺ޽,,6202 +L줽,ܺ޽,Xftm,,6158 +L줽,IPQC-2/FQC,}ءB,Z,6205 +L줽,ܺ޽,~,,6165 +L줽,ܺ޽,Xf/],,6160 +L줽,Ӻ޲z/IQCӺ޲z/IQC,k,`Ҫ,6559 +L줽,ܺ޽,Xf/],,6255 +L줽,ʽ,ʽ,,6201 +L줽,~˴,Pz,Z,6060 +L줽,ʽ,,,6105 +L줽,ʽ,쪫,,6136 +L줽,~Oҽҫ~Oҽ,P,Ҫ,6558 +L줽,ʽ,],,6222 +L줽,QS,L/,,6580 +L줽,ʽ,B}[Bq,,6323 +L줽,,itBv,,6556 +L줽,Ƚ,Ƚ,,6161 +L줽,,H,,6567 +L줽,Ƚ,Xf,,6170 +L줽,W,Q,,6550 +L줽,ȤAȽ,,Ҫ,6251 +L줽,Ƚ,i/Xf,,6416 +L줽,|p,|p,,6915 +L줽,|p,GL`b,,6505 +L줽,Hʹ,d,Ʋz(),6585 +L줽,|p,FAT,,6907 +L줽,,{,,6526 +L줽,|p,AR,,6912 +L줽,~Ȥ@,˷sj,Ҫ,6109 +L줽,,,,6025 +L줽,,COST,,6903 +L줽,~ȤG,fO,Ҫ,6113 +L줽,]Ƚ,]Ƚ,,6905 +L줽,]Ƚ,CEH,,6913 +L줽,~ȦF,a޳,`Ҫ,6118 +L줽,]Ƚ,],,6902 +L줽,uȳ,/w,,6565 +L줽,uȤ@,uȤ@,,6582 +L줽,uȤ@,TO/MOSk,,6051 +L줽,,BҡBK,,6210 +L줽,uȤG,uȤG,,6549 +L줽,uȤG,u-/},,6211 +L줽,uȤG,u-TMTT,,6577 +L줽,tȽ,t,,6299 +L줽,w,w,,6186 +MBU3,,,`B,7718 +MBU3,sy,,`B,7718 +MBU3,,ʦt,B,7889 +MBU3,sy,B,BUz,7622 +MBU3,,Lhf,z,7712 +MBU3,,^t,gz(N),7888 +MBU3,u{o,QB,u{ogz,7609 +MBU3,,Bvw,gz,7866 +MBU3,u{o,WBu{v&Ҫ,ʸˤu{,7627 +MBU3,,BE,Ʋz,7877 +MBU3,u{o,DBu{v,,7607 +MBU3,,QB,gz,7609 +MBU3,u{o,DBu{v,,7603 +MBU3,,\H,gz,7800 +MBU3,u{o,WBu{v,,7608 +MBU3,,,gz,7822 +MBU3,u{o,SAWu{v,,7619 +MBU3,޲z,B,,7889 +MBU3,u{o,Uzu{v,,7608 +MBU3,u{o,TMTT~Du{v,״/~u{,7608 +MBU3,]ȷ|p,]ȳz,,7712 +MBU3,]ȷ|p,|p,,7629 +MBU3,u{o,gz,ʸ˶}o,7609 +MBU3,]ȷ|p,,,7713 +MBU3,u{o,MESu{v,,7607 +MBU3,u{o,ʸ˶}ou{v,,7603 +MBU3,]ȷ|p,]Ƚ,,7629 +MBU3,u{o,øϤu{v,,7607 +MBU3,T,TB,,7889 +MBU3,u{o,Uzu{v,,7609 +MBU3,T,Tgz,,7888 +MBU3,T,T,,7630 +MBU3,~u{,\H,~u{gz,7800 +MBU3,~u{,~tΰƲz,~tν,7601 +MBU3,~u{,󱱨u{v,,7700 +MBU3,~u{,`gz,~豱,7800 +MBU3,~u{,~u{v,,7602 +MBU3,F,Fgz,,7866 +MBU3,~u{,eqˬd,,7510 +MBU3,F,H,,7707 +MBU3,~u{,qˬd,,7511 +MBU3,~u{,`gz,Ȥ~ި/FA,7800 +MBU3,~u{,շǤu{v,,7606 +MBU3,F,`Ƚ,,7866 +MBU3,~u{,IQCu{v,ӫ~ި,7515 +MBU3,,Ƹgz,,7877 +MBU3,Ͳ,,Ͳgz,7822 +MBU3,,/Ƚ,,7877 +MBU3,Ͳ,B@@,M,7610 +MBU3,Ͳ,Ҫ,ʸ˥Ͳ,7616 +MBU3,Ͳ,,,7501 +MBU3,,ͺ/,,7513 +MBU3,Ͳ,ȼ߲k,,7502 +MBU3,Ͳ,@k,,7503 +MBU3,Ͳ,s,,7615 +MBU3,,ܺ޽,,7705 +MBU3,Ͳ,,,7505 +MBU3,Ͳ,q,,7506 +MBU3,Ͳ,,,7507 +MBU3,Ͳ,Ҫ,եͲ,7613 +MBU3,Ͳ,״Ͳ,,7508 +MBU3,Ͳ,Ҫ,]ˤJwXf,7509 +MBU3,Ͳ,DLVCIҪ,DLVCI,7612 +MBU3,Ͳ,V,,7610 +MBU3,uȳ,,uȳgz,7822 +MBU3,uȳ,SAW]Ƥu{v,/ν,7618 +MBU3,uȳ,ʳ]Ƥu{v,/s,7620 +MBU3,uȳ,Ҫ,tȽ,7626 +MBU3,w,B,Ҫ,7622 +O_줽,,,,5121 +O_줽,,O_ڷ|ij,,5205 +O_줽,,,,5127 +O_줽,,,,5122 +O_줽,,j,,5042 +O_줽,,,,5015 +O_줽,,RWen,,5095 +O_줽,,,,5123 +O_줽,,RIPD dq Max / PӰ Zhou / Sam,,5124 +O_줽,,LTqSam,,5044 +O_줽,,ؤRandy,,5062 +O_줽,,FAE,,5125 +O_줽,,Ĥ@|ij(qv]),,5204 +O_줽,,вIvy LEE/9,,5016 +O_줽,,Tom,,5045 +O_줽,,ۺӮxSwaraj Ashok Shevgan,,5107 +O_줽,,μEmily,,5112 +O_줽,,}Vincent,,5019 +O_줽,,i|lAllen,,5126 +O_줽,,iwDavid,,5092 +O_줽,,lӽSeven,,5055 +O_줽,,HBTerry,,5046 +O_줽,,HJead,,5036 +O_줽,,κaLeo,,5008 +O_줽,,O_ĤT|ij(q]),,5202 +O_줽,,GDDAnnie jZ,,6031 +O_줽,,iΩJason,,5002 +O_줽,,|Mandy,,5070 +O_줽,,dPSammi,,5020 +O_줽,,Ĭ_Mika,,5023 +O_줽,,LͳKyle,,5009 +O_줽,,d^Gina,,5068 +O_줽,,ӰAC,,5065 +O_줽,,O_ĥ||ij(qv]),,5201 +O_줽,,ӰJack,,5043 +O_줽,,L۽Verna,,5035 +O_줽,,Ellen,,5014 +O_줽,,yYCindy,,5038 +O_줽,,MRich,,5022 +O_줽,,зORuby,,5048 +O_줽,,aNeo,,5069 +O_줽,,O_ĤG|ij(v]),,5203 +O_줽,,GŬ Amanda Cheng,,5108 +O_줽,,XtP y1,,5093 +O_줽,,QCattleya,,5034 +O_줽,,XJoyce,,5021 +O_줽,,CQJenny,,5052 +O_줽,,PwxAnnie,,5099 +O_줽,,aJenny,,5007 +O_줽,,tKen,,5027 +O_줽,,vSean,,5051 +O_줽,,LӻEric,,5031 +O_줽,,Ba޷Jasper,,5064 +O_줽,,Avril,,5134 +O_줽,,ݵBen,,5006 +O_줽,,|oClaire,,5082 +O_줽,,LzQunny,,5101 +O_줽,,{Jackson,,5011 +O_줽,,@Helen,,5169 +O_줽,,lѦ]Alecia,,5003 +O_줽,,Fang,,5056 +O_줽,,x?Jim,,5071 +O_줽,,lAva,,5097 +O_줽,,²uOlivia,,5091 +O_줽,,ոJash,,5054 +O_줽,,X Shane,,6025 +O_줽,,§Wynton,,5100 +O_줽,,l\Katy,,5049 +O_줽,,LRichard,,5132 +O_줽,,LwJoan,,5133 +O_줽,,CJoanna,,5033 +O_줽,,ܪYRenee,,5005 +O_줽,,ĬɤOrchid,,5028 +O_줽,,\Jojo,,5037 +O_줽,,pWilly,,5096 +O_줽,,BHAlex,,5066 +O_줽,,doArnold,,5058 +O_줽,,ùwDRen,,5030 +O_줽,,isUla,,5094 +O_줽,,ӿWilliam,,5130 +O_줽,,EJimmy,,5061 +O_줽,,Roland,`줽,5081 +O_줽,,`줽,,5088 +O_줽,,Edgar ,B줽,5040 +O_줽,,Hank W,`ʿ줽,5012 +O_줽,,Danil CC,B줽,5001 +O_줽,,Rich [,B줽,5047 +O_줽,,Ken 궶,B줽,5059 +O_줽,,Brian L,B줽,5025 +O_줽,,EdisonG,B줽,5128 diff --git a/samples/template.csv b/samples/template.csv new file mode 100644 index 0000000..a272f92 --- /dev/null +++ b/samples/template.csv @@ -0,0 +1 @@ +plant,department,csv_id,position,extension diff --git a/setting.txt b/setting.txt new file mode 100644 index 0000000..973be4c --- /dev/null +++ b/setting.txt @@ -0,0 +1,5 @@ +Host:mysql.theaken.com +Port:33306 +Database:db_A024 +Username:A024 +Password:p1D37ddnIJCN \ No newline at end of file diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..6f16c0e --- /dev/null +++ b/templates/index.html @@ -0,0 +1,390 @@ + + + + + + PANJIT分機表查詢 + + + +
+
+

PANJIT分機表查詢

+

快速查詢與管理分機資料

+
+ + +
+ +
+
+ + +
+
+ + +
+ + + + + +
+
+ + + + + + + + +
+ + + + + + + + + + + + + {% for row in data %} + + + + + + + + + {% endfor %} + +
廠別部門姓名職位分機操作
{{ row.plant }}{{ row.department }}{{ row.name }}{{ row.position }}{{ row.extension }} + + +
+
+
+ + + + \ No newline at end of file diff --git a/test_mysql_connection.py b/test_mysql_connection.py new file mode 100644 index 0000000..4cb7130 --- /dev/null +++ b/test_mysql_connection.py @@ -0,0 +1,26 @@ + +import mysql.connector + +def get_connection_details(): + details = {} + with open('setting.txt', 'r') as f: + for line in f: + key, value = line.strip().split(':', 1) + details[key.strip()] = value.strip() + return details + +try: + config = get_connection_details() + conn = mysql.connector.connect( + host=config.get('Host'), + port=config.get('Port'), + user=config.get('Username'), + password=config.get('Password'), + database=config.get('Database') + ) + print("Connection successful!") + conn.close() +except ImportError: + print("Error: mysql-connector-python is not installed. Please install it using: pip install mysql-connector-python") +except Exception as e: + print(f"An error occurred: {e}") diff --git a/truncate_table.py b/truncate_table.py new file mode 100644 index 0000000..a155b5f --- /dev/null +++ b/truncate_table.py @@ -0,0 +1,36 @@ + +import mysql.connector + +def get_connection_details(): + details = {} + with open('setting.txt', 'r') as f: + for line in f: + key, value = line.strip().split(':', 1) + details[key.strip()] = value.strip() + return details + +def truncate_table(): + conn = None + try: + config = get_connection_details() + conn = mysql.connector.connect( + host=config.get('Host'), + port=config.get('Port'), + user=config.get('Username'), + password=config.get('Password'), + database=config.get('Database') + ) + cursor = conn.cursor() + + cursor.execute("TRUNCATE TABLE extension_data") + conn.commit() + print("Table 'extension_data' truncated successfully.") + + except Exception as e: + print(f"An error occurred: {e}") + finally: + if conn and conn.is_connected(): + conn.close() + +if __name__ == "__main__": + truncate_table()