Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added __pycache__/md5.cpython-39.pyc
Binary file not shown.
89 changes: 89 additions & 0 deletions customer.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
-- phpMyAdmin SQL Dump
-- version 5.2.0
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1:3307
-- Generation Time: Mar 26, 2023 at 10:00 AM
-- Server version: 10.4.27-MariaDB
-- PHP Version: 8.2.0

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `source`
--

-- --------------------------------------------------------

--
-- Table structure for table `customer`
--

CREATE TABLE `customer` (
`CUST_CODE` varchar(6) NOT NULL,
`CUST_NAME` varchar(40) NOT NULL,
`CUST_CITY` char(30) DEFAULT NULL,
`WORKING_AREA` varchar(35) NOT NULL,
`CUST_COUNTRY` varchar(20) NOT NULL,
`GRADE` int(12) DEFAULT NULL,
`OPENING_AMT` int(12) NOT NULL,
`RECEIVE_AMT` int(12) NOT NULL,
`PAYMENT_AMT` int(12) NOT NULL,
`OUTSTANDING_AMT` int(12) NOT NULL,
`PHONE_NO` varchar(10) NOT NULL,
`AGENT_CODE` char(6) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `customer`
--

INSERT INTO `customer` (`CUST_CODE`, `CUST_NAME`, `CUST_CITY`, `WORKING_AREA`, `CUST_COUNTRY`, `GRADE`, `OPENING_AMT`, `RECEIVE_AMT`, `PAYMENT_AMT`, `OUTSTANDING_AMT`, `PHONE_NO`, `AGENT_CODE`) VALUES
('C00001', 'Micheal', 'New York', 'New York', 'USA', 2, 3000, 5000, 2000, 6000, 'CCCCCCC', 'A008'),
('C00002', 'Bolt', 'New York', 'New York', 'USA', 3, 5000, 7000, 9000, 3000, 'DDNRDRH', 'A008'),
('C00003', 'Martin', 'Torento', 'Torento', 'Canada', 2, 8000, 7000, 7000, 8000, 'MJYURFD', 'A004'),
('C00004', 'Winston', 'Brisban', 'Brisban', 'Australia', 1, 5000, 8000, 7000, 6000, 'AAAAAAA', 'A005'),
('C00005', 'Sasikant', 'Mumbai', 'Mumbai', 'India', 1, 7000, 11000, 7000, 11000, '147-258963', 'A002'),
('C00006', 'Shilton', 'Torento', 'Torento', 'Canada', 1, 10000, 7000, 6000, 11000, 'DDDDDDD', 'A004'),
('C00007', 'Ramanathan', 'Chennai', 'Chennai', 'India', 1, 7000, 11000, 9000, 9000, 'GHRDWSD', 'A010'),
('C00008', 'Karolina', 'Torento', 'Torento', 'Canada', 1, 7000, 7000, 9000, 5000, 'HJKORED', 'A004'),
('C00009', 'Ramesh', 'Mumbai', 'Mumbai', 'India', 3, 8000, 7000, 3000, 12000, 'Phone No', 'A002'),
('C00010', 'Charles', 'Hampshair', 'Hampshair', 'UK', 3, 6000, 4000, 5000, 5000, 'MMMMMMM', 'A009'),
('C00011', 'Sundariya', 'Chennai', 'Chennai', 'India', 3, 7000, 11000, 7000, 11000, 'PPHGRTS', 'A010'),
('C00012', 'Steven', 'San Jose', 'San Jose', 'USA', 1, 5000, 7000, 9000, 3000, 'KRFYGJK', 'A012'),
('C00013', 'Holmes', 'London', 'London', 'UK', 2, 6000, 5000, 7000, 4000, 'BBBBBBB', 'A003'),
('C00014', 'Rangarappa', 'Bangalore', 'Bangalore', 'India', 2, 8000, 11000, 7000, 12000, 'AAAATGF', 'A001'),
('C00015', 'Stuart', 'London', 'London', 'UK', 1, 6000, 8000, 3000, 11000, 'GFSGERS', 'A003'),
('C00016', 'Venkatpati', 'Bangalore', 'Bangalore', 'India', 2, 8000, 11000, 7000, 12000, 'JRTVFDD', 'A007'),
('C00017', 'Srinivas', 'Bangalore', 'Bangalore', 'India', 2, 8000, 4000, 3000, 9000, 'AAAAAAB', 'A007'),
('C00018', 'Fleming', 'Brisban', 'Brisban', 'Australia', 2, 7000, 7000, 9000, 5000, 'NHBGVFC', 'A005'),
('C00019', 'Yearannaidu', 'Chennai', 'Chennai', 'India', 1, 8000, 7000, 7000, 8000, 'ZZZZBFV', 'A010'),
('C00020', 'Albert', 'New York', 'New York', 'USA', 3, 5000, 7000, 6000, 6000, 'BBBBSBB', 'A008'),
('C00021', 'Jacks', 'Brisban', 'Brisban', 'Australia', 1, 7000, 7000, 7000, 7000, 'WERTGDF', 'A005'),
('C00022', 'Avinash', 'Mumbai', 'Mumbai', 'India', 2, 7000, 11000, 9000, 9000, '113-123456', 'A002'),
('C00023', 'Karl', 'London', 'London', 'UK', 0, 4000, 6000, 7000, 3000, 'AAAABAA', 'A006'),
('C00024', 'Cook', 'London', 'London', 'UK', 2, 4000, 9000, 7000, 6000, 'FSDDSDF', 'A006'),
('C00025', 'Ravindran', 'Bangalore', 'Bangalore', 'India', 2, 5000, 7000, 4000, 8000, 'AVAVAVA', 'A011');

--
-- Indexes for dumped tables
--

--
-- Indexes for table `customer`
--
ALTER TABLE `customer`
ADD PRIMARY KEY (`CUST_CODE`);
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
154 changes: 154 additions & 0 deletions dds.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
-- phpMyAdmin SQL Dump
-- version 5.2.0
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1:3307
-- Generation Time: Mar 26, 2023 at 04:48 PM
-- Server version: 10.4.27-MariaDB
-- PHP Version: 8.2.0

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `dds`
--

-- --------------------------------------------------------

--
-- Table structure for table `dds_customer`
--

CREATE TABLE `dds_customer` (
`CUSTOMER_RK` int(11) NOT NULL,
`CUST_CODE` varchar(6) NOT NULL,
`VALID_TO_DTTM` datetime NOT NULL,
`CUST_NAME` varchar(40) NOT NULL,
`CUST_CITY` char(30) DEFAULT NULL,
`WORKING_AREA` varchar(35) NOT NULL,
`CUST_COUNTRY` varchar(20) NOT NULL,
`GRADE` int(12) DEFAULT NULL,
`OPENING_AMT` int(12) NOT NULL,
`RECEIVE_AMT` int(12) NOT NULL,
`PAYMENT_AMT` int(12) NOT NULL,
`OUTSTANDING_AMT` int(12) NOT NULL,
`PHONE_NO` varchar(10) NOT NULL,
`AGENT_CODE` char(6) NOT NULL,
`VALID_FROM_DTTM` datetime DEFAULT NULL,
`PROCESSED_DTTM` datetime NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `dds_customer`
--

INSERT INTO `dds_customer` (`CUSTOMER_RK`, `CUST_CODE`, `VALID_TO_DTTM`, `CUST_NAME`, `CUST_CITY`, `WORKING_AREA`, `CUST_COUNTRY`, `GRADE`, `OPENING_AMT`, `RECEIVE_AMT`, `PAYMENT_AMT`, `OUTSTANDING_AMT`, `PHONE_NO`, `AGENT_CODE`, `VALID_FROM_DTTM`, `PROCESSED_DTTM`) VALUES
(1, 'C00001', '2023-03-26 20:12:31', 'AAAA', 'New York', 'New York', 'USA', 2, 3000, 5000, 2000, 6000, 'CCCCCCC', 'A008', '2023-03-26 20:12:08', '2023-03-26 20:12:08'),
(1, 'C00001', '5999-01-12 00:00:00', 'krupal', 'New York', 'New York', 'USA', 2, 3000, 5000, 2000, 6000, 'CCCCCCC', 'A008', '2023-03-26 20:12:31', '2023-03-26 20:12:31'),
(2, 'C00002', '5999-01-12 00:00:00', 'Bolt', 'New York', 'New York', 'USA', 3, 5000, 7000, 9000, 3000, 'DDNRDRH', 'A008', '2023-03-26 20:12:08', '2023-03-26 20:12:08'),
(3, 'C00003', '5999-01-12 00:00:00', 'Martin', 'Torento', 'Torento', 'Canada', 2, 8000, 7000, 7000, 8000, 'MJYURFD', 'A004', '2023-03-26 20:12:08', '2023-03-26 20:12:08'),
(4, 'C00004', '5999-01-12 00:00:00', 'Winston', 'Brisban', 'Brisban', 'Australia', 1, 5000, 8000, 7000, 6000, 'AAAAAAA', 'A005', '2023-03-26 20:12:08', '2023-03-26 20:12:08'),
(5, 'C00005', '5999-01-12 00:00:00', 'Sasikant', 'Mumbai', 'Mumbai', 'India', 1, 7000, 11000, 7000, 11000, '147-258963', 'A002', '2023-03-26 20:12:08', '2023-03-26 20:12:08'),
(6, 'C00006', '5999-01-12 00:00:00', 'Shilton', 'Torento', 'Torento', 'Canada', 1, 10000, 7000, 6000, 11000, 'DDDDDDD', 'A004', '2023-03-26 20:12:08', '2023-03-26 20:12:08'),
(7, 'C00007', '5999-01-12 00:00:00', 'Ramanathan', 'Chennai', 'Chennai', 'India', 1, 7000, 11000, 9000, 9000, 'GHRDWSD', 'A010', '2023-03-26 20:12:08', '2023-03-26 20:12:08'),
(8, 'C00008', '5999-01-12 00:00:00', 'Karolina', 'Torento', 'Torento', 'Canada', 1, 7000, 7000, 9000, 5000, 'HJKORED', 'A004', '2023-03-26 20:12:08', '2023-03-26 20:12:08'),
(9, 'C00009', '5999-01-12 00:00:00', 'Ramesh', 'Mumbai', 'Mumbai', 'India', 3, 8000, 7000, 3000, 12000, 'Phone No', 'A002', '2023-03-26 20:12:08', '2023-03-26 20:12:08'),
(10, 'C00010', '5999-01-12 00:00:00', 'Charles', 'Hampshair', 'Hampshair', 'UK', 3, 6000, 4000, 5000, 5000, 'MMMMMMM', 'A009', '2023-03-26 20:12:08', '2023-03-26 20:12:08'),
(11, 'C00011', '5999-01-12 00:00:00', 'Sundariya', 'Chennai', 'Chennai', 'India', 3, 7000, 11000, 7000, 11000, 'PPHGRTS', 'A010', '2023-03-26 20:12:08', '2023-03-26 20:12:08'),
(12, 'C00012', '5999-01-12 00:00:00', 'Steven', 'San Jose', 'San Jose', 'USA', 1, 5000, 7000, 9000, 3000, 'KRFYGJK', 'A012', '2023-03-26 20:12:08', '2023-03-26 20:12:08'),
(13, 'C00013', '5999-01-12 00:00:00', 'Holmes', 'London', 'London', 'UK', 2, 6000, 5000, 7000, 4000, 'BBBBBBB', 'A003', '2023-03-26 20:12:08', '2023-03-26 20:12:08'),
(14, 'C00014', '5999-01-12 00:00:00', 'Rangarappa', 'Bangalore', 'Bangalore', 'India', 2, 8000, 11000, 7000, 12000, 'AAAATGF', 'A001', '2023-03-26 20:12:08', '2023-03-26 20:12:08'),
(15, 'C00015', '5999-01-12 00:00:00', 'Stuart', 'London', 'London', 'UK', 1, 6000, 8000, 3000, 11000, 'GFSGERS', 'A003', '2023-03-26 20:12:08', '2023-03-26 20:12:08'),
(16, 'C00016', '5999-01-12 00:00:00', 'Venkatpati', 'Bangalore', 'Bangalore', 'India', 2, 8000, 11000, 7000, 12000, 'JRTVFDD', 'A007', '2023-03-26 20:12:08', '2023-03-26 20:12:08'),
(17, 'C00017', '5999-01-12 00:00:00', 'Srinivas', 'Bangalore', 'Bangalore', 'India', 2, 8000, 4000, 3000, 9000, 'AAAAAAB', 'A007', '2023-03-26 20:12:08', '2023-03-26 20:12:08'),
(18, 'C00018', '5999-01-12 00:00:00', 'Fleming', 'Brisban', 'Brisban', 'Australia', 2, 7000, 7000, 9000, 5000, 'NHBGVFC', 'A005', '2023-03-26 20:12:08', '2023-03-26 20:12:08'),
(19, 'C00019', '5999-01-12 00:00:00', 'Yearannaidu', 'Chennai', 'Chennai', 'India', 1, 8000, 7000, 7000, 8000, 'ZZZZBFV', 'A010', '2023-03-26 20:12:08', '2023-03-26 20:12:08'),
(20, 'C00020', '5999-01-12 00:00:00', 'Albert', 'New York', 'New York', 'USA', 3, 5000, 7000, 6000, 6000, 'BBBBSBB', 'A008', '2023-03-26 20:12:08', '2023-03-26 20:12:08'),
(21, 'C00021', '5999-01-12 00:00:00', 'Jacks', 'Brisban', 'Brisban', 'Australia', 1, 7000, 7000, 7000, 7000, 'WERTGDF', 'A005', '2023-03-26 20:12:08', '2023-03-26 20:12:08'),
(22, 'C00022', '5999-01-12 00:00:00', 'Avinash', 'Mumbai', 'Mumbai', 'India', 2, 7000, 11000, 9000, 9000, '113-123456', 'A002', '2023-03-26 20:12:08', '2023-03-26 20:12:08'),
(23, 'C00023', '5999-01-12 00:00:00', 'Karl', 'London', 'London', 'UK', 0, 4000, 6000, 7000, 3000, 'AAAABAA', 'A006', '2023-03-26 20:12:08', '2023-03-26 20:12:08'),
(24, 'C00024', '5999-01-12 00:00:00', 'Cook', 'London', 'London', 'UK', 2, 4000, 9000, 7000, 6000, 'FSDDSDF', 'A006', '2023-03-26 20:12:08', '2023-03-26 20:12:08'),
(25, 'C00025', '5999-01-12 00:00:00', 'Ravindran', 'Bangalore', 'Bangalore', 'India', 2, 5000, 7000, 4000, 8000, 'AVAVAVA', 'A011', '2023-03-26 20:12:08', '2023-03-26 20:12:08');

-- --------------------------------------------------------

--
-- Table structure for table `dds_customer_inc`
--

CREATE TABLE `dds_customer_inc` (
`CUSTOMER_RK` int(11) NOT NULL,
`CUST_CODE` varchar(6) NOT NULL,
`VALID_TO_DTTM` datetime NOT NULL,
`CUST_NAME` varchar(40) NOT NULL,
`CUST_CITY` char(30) DEFAULT NULL,
`WORKING_AREA` varchar(35) NOT NULL,
`CUST_COUNTRY` varchar(20) NOT NULL,
`GRADE` int(12) DEFAULT NULL,
`OPENING_AMT` int(12) NOT NULL,
`RECEIVE_AMT` int(12) NOT NULL,
`PAYMENT_AMT` int(12) NOT NULL,
`OUTSTANDING_AMT` int(12) NOT NULL,
`PHONE_NO` varchar(10) NOT NULL,
`AGENT_CODE` char(6) NOT NULL,
`VALID_FROM_DTTM` datetime DEFAULT NULL,
`PROCESSED_DTTM` datetime NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `dds_customer_inc`
--

INSERT INTO `dds_customer_inc` (`CUSTOMER_RK`, `CUST_CODE`, `VALID_TO_DTTM`, `CUST_NAME`, `CUST_CITY`, `WORKING_AREA`, `CUST_COUNTRY`, `GRADE`, `OPENING_AMT`, `RECEIVE_AMT`, `PAYMENT_AMT`, `OUTSTANDING_AMT`, `PHONE_NO`, `AGENT_CODE`, `VALID_FROM_DTTM`, `PROCESSED_DTTM`) VALUES
(1, 'C00013', '5999-01-01 00:00:00', 'Holmes', 'London', 'London', 'UK', 2, 6000, 5000, 7000, 4000, 'BBBBBBB', 'A003', '2023-03-26 00:00:00', '2023-03-26 14:55:56'),
(2, 'C00001', '5999-01-01 00:00:00', 'Micheal', 'New York', 'New York', 'USA', 2, 3000, 5000, 2000, 6000, 'CCCCCCC', 'A008', '2023-03-26 00:00:00', '2023-03-26 14:59:58'),
(3, 'C00020', '5999-01-01 00:00:00', 'Albert', 'New York', 'New York', 'USA', 3, 5000, 7000, 6000, 6000, 'BBBBSBB', 'A008', '2023-03-26 00:00:00', '2023-03-26 14:59:58'),
(4, 'C00025', '5999-01-01 00:00:00', 'Ravindran', 'Bangalore', 'Bangalore', 'India', 2, 5000, 7000, 4000, 8000, 'AVAVAVA', 'A011', '2023-03-26 00:00:00', '2023-03-26 14:59:58'),
(5, 'C00024', '5999-01-01 00:00:00', 'Cook', 'London', 'London', 'UK', 2, 4000, 9000, 7000, 6000, 'FSDDSDF', 'A006', '2023-03-26 00:00:00', '2023-03-26 14:59:58'),
(6, 'C00015', '5999-01-01 00:00:00', 'Stuart', 'London', 'London', 'UK', 1, 6000, 8000, 3000, 11000, 'GFSGERS', 'A003', '2023-03-26 00:00:00', '2023-03-26 14:59:58'),
(7, 'C00002', '5999-01-01 00:00:00', 'Bolt', 'New York', 'New York', 'USA', 3, 5000, 7000, 9000, 3000, 'DDNRDRH', 'A008', '2023-03-26 00:00:00', '2023-03-26 14:59:58');

--
-- Indexes for dumped tables
--

--
-- Indexes for table `dds_customer`
--
ALTER TABLE `dds_customer`
ADD PRIMARY KEY (`CUSTOMER_RK`,`VALID_TO_DTTM`);

--
-- Indexes for table `dds_customer_inc`
--
ALTER TABLE `dds_customer_inc`
ADD PRIMARY KEY (`CUSTOMER_RK`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `dds_customer`
--
ALTER TABLE `dds_customer`
MODIFY `CUSTOMER_RK` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=26;

--
-- AUTO_INCREMENT for table `dds_customer_inc`
--
ALTER TABLE `dds_customer_inc`
MODIFY `CUSTOMER_RK` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
6 changes: 6 additions & 0 deletions md5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import hashlib
import mysql.connector

def hash(value):
result = hashlib.md5(value.encode())
return result.hexdigest()
32 changes: 32 additions & 0 deletions readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@

# SCD (Slow Changing Dimension) Type-2

To maintain history data.



## 🔗 Links
[![portfolio](https://img.shields.io/badge/my_portfolio-000?style=for-the-badge&logo=ko-fi&logoColor=white)](https://krupalvora.github.io/)
[![linkedin](https://img.shields.io/badge/linkedin-0A66C2?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/krupalvora/)



## Working

- If record doesn't exists based on business keys, then insert record with respective falgs.

- If record exists then track changes, close old record & open new record.



## Authors

- [@krupalvora](https://github.com/krupalvora)


## Tech Stack

**Language:** Python, SQL

**Other:** Hashing Algo (MD5)

83 changes: 83 additions & 0 deletions scd.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
import hashlib
import mysql.connector
import datetime
from md5 import hash

# GET VALUES FROM SRC
conn = mysql.connector.connect(host='localhost', database='source',user='sasdds', password='1234', port=3307)
source=conn.cursor(prepared=True)
source.execute("select CUST_CODE from CUSTOMER")
s=source.fetchall()
source.execute("select `CUST_CODE`, `CUST_NAME`, `CUST_CITY`, `WORKING_AREA`, `CUST_COUNTRY`, `GRADE`, `OPENING_AMT`, `RECEIVE_AMT`, `PAYMENT_AMT`, `OUTSTANDING_AMT`, `PHONE_NO`, `AGENT_CODE` from CUSTOMER")
st=source.fetchall()
conn.commit()
ss=str(s).replace(",)","").replace("(","").replace("[","").replace("]","").replace(" ","")


#GET VALUES FORM TARGET WITH MATCHING BUSINESS KEYS
conn = mysql.connector.connect(host='localhost', database='dds',user='sasdds', password='1234', port=3307)
dds=conn.cursor()
query=" select CUST_CODE from DDS_CUSTOMER where CUST_CODE in (" + ss +") AND VALID_TO_DTTM='5999-01-12 00:00:00'"
dds.execute(query)
d=dds.fetchall()
query=" select `CUST_CODE`, `CUST_NAME`, `CUST_CITY`, `WORKING_AREA`, `CUST_COUNTRY`, `GRADE`, `OPENING_AMT`, `RECEIVE_AMT`, `PAYMENT_AMT`, `OUTSTANDING_AMT`, `PHONE_NO`, `AGENT_CODE` ,CUSTOMER_RK from DDS_CUSTOMER where CUST_CODE in (" + ss +") AND VALID_TO_DTTM='5999-01-12 00:00:00'"
dds.execute(query)
dt=dds.fetchall()
conn.commit()

#print(len(s) ,len(d) )

# if difference between src and dds is zero then
if len(s) <= len(d) :
upd_keys=set(s).union(set(d))
upd_keys=list(zip(*upd_keys))[0]
for i in range(len(d)): # iter for each present key
update=[]
insert=[]
for j in range(len(dt)):
if dt[j][0] == upd_keys[i]:
tmp1= dt[j]
for j in range(len(st)):
if st[j][0] == upd_keys[i]:
tmp2= st[j]
h1,h2= hash(str(tmp1[:-1])),hash(str(tmp2))
#print(h1,h2)
if h1==h2:
pass
else :
print(h1,h2,upd_keys[i])
#update.append(dt[i] + (str(datetime.datetime.today().strftime('%Y-%m-%d %H:%M:%S')),))
#insert.append(st[i] + ('5999-01-12',str(datetime.datetime.today().strftime('%Y-%m-%d %H:%M:%S')),))
update=(str(datetime.datetime.today().strftime('%Y-%m-%d %H:%M:%S')),) + (upd_keys[i],)
conn = mysql.connector.connect(host='localhost', database='dds',user='sasdds', password='1234', port=3307)
upd_rec=conn.cursor(prepared=True)
query='''UPDATE `dds_customer` SET VALID_TO_DTTM=%s WHERE CUST_CODE=%s;'''
upd_rec.execute(query,update)
conn.commit()

insert=tmp2 + ('5999-01-12',str(datetime.datetime.today().strftime('%Y-%m-%d %H:%M:%S')),) + (tmp1[len(tmp1)-1],)
print(insert)
conn = mysql.connector.connect(host='localhost', database='dds',user='sasdds', password='1234', port=3307)
insert_rec=conn.cursor(prepared=True)
query='''INSERT INTO `dds_customer` (`CUST_CODE`, `CUST_NAME`, `CUST_CITY`, `WORKING_AREA`, `CUST_COUNTRY`, `GRADE`, `OPENING_AMT`, `RECEIVE_AMT`
, `PAYMENT_AMT`, `OUTSTANDING_AMT`, `PHONE_NO`, `AGENT_CODE`, `VALID_TO_DTTM`, `VALID_FROM_DTTM`, CUSTOMER_RK)
VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);'''
insert_rec.execute(query,insert)
conn.commit()
# if values in src are greater than dds then insert missing ones.
elif len(s) > len(d) :
ins_keys=list(set(s)-set(d))
ins_keys=list(zip(*ins_keys))[0]
# i records to be insertd
insert =[]
for i in range(len(st)):
if st[i][0] in ins_keys:
insert.append(st[i] + ('5999-01-12',str(datetime.datetime.today().strftime('%Y-%m-%d %H:%M:%S')),))
# Insert statement
conn = mysql.connector.connect(host='localhost', database='dds',user='sasdds', password='1234', port=3307)
insert_rec=conn.cursor(prepared=True)
query='''INSERT INTO `dds_customer` (`CUST_CODE`, `CUST_NAME`, `CUST_CITY`, `WORKING_AREA`, `CUST_COUNTRY`, `GRADE`, `OPENING_AMT`, `RECEIVE_AMT`, `PAYMENT_AMT`, `OUTSTANDING_AMT`, `PHONE_NO`, `AGENT_CODE`, `VALID_TO_DTTM`, `VALID_FROM_DTTM`)
VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);'''
insert_rec.executemany(query,insert)
conn.commit()

Loading