#python #pandas #csv #foreign-keys #primary-key
Вопрос:
Вот пример моего файла python для извлечения первичного ключа из csv-файлов:
from os import listdir
import pandas
from itertools import chain, combinations
import pandas as pd
import numpy as np
import os
import itertools
import time
def is_subkey(newkey,keys):
# test wheather newkey is sub set of any keys
for key in keys:
if set(key).issubset(newkey) :
return True
return False
def primarykey_recognition(file,max_num=8):
# file is an file object, returnd by function open()
# doc is a pandas DF
doc = pd.read_csv(file,sep=',')
num = 1
result = []
table_length = len(doc.values)
while num <= max_num:
keys = list(itertools.combinations(doc.columns,num))
# print(keys)
for key in keys:
if is_subkey(key,result):
# if key belong to any sub set of keys in result ,continue
continue
#
bools = np.array(doc.duplicated(subset=list(key)))
if np.sum(bools) > 0:
# sum(bools) means bools has duplicated lines
continue
else:
result.append(list(key))
num = 1
return result
def primary_key_discovery(data_path):
def witer(file_name):
with open(data_path "/" file_name) as file:
keys = primarykey_recognition(file)
return file.name,":",keys
return list(map(witer , (filter(lambda x :".csv" in x ,os.listdir(data_path)))))
print(primary_key_discovery('Data/'))
Я хочу передать результат этого в другую функцию o обнаружить ключ foregin, но я понятия не имею, как я могу это сделать
с помощью функции foreignkey_discovery(путь к данным,PK):
для файлов в пути к данным:
для ключа в Пк:
если столбец в файлах является подмножеством в ключе:
возвращение форгинки