-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhomework
More file actions
59 lines (51 loc) · 2.24 KB
/
homework
File metadata and controls
59 lines (51 loc) · 2.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import sqlite3
import pandas as pd
import re
def strip_tags(value):
return re.sub(r'<[^>]*>', '', str(value))
# Создание БД
con = sqlite3.connect('works.sqlite')
cursor = con.cursor()
cursor.execute('PRAGMA foreign_keys = true')
con.commit()
# Создание и заполнение таблицы works
cursor.execute('DROP TABLE IF EXISTS works')
cursor.execute('CREATE TABLE works ('
'ID INTEGER PRIMARY KEY AUTOINCREMENT,'
'salary INTEGER,'
'educationType TEXT,'
'jobTitle TEXT,'
'qualification TEXT,'
'gender TEXT,'
'dateModify TEXT,'
'skills TEXT,'
'otherInfo TEXT)')
df = pd.read_csv("works.csv")
# Очистка от тегов
df['skills'] = df['skills'].apply(strip_tags)
df['otherInfo'] = df['otherInfo'].apply(strip_tags)
df.to_sql("works", con, if_exists='append', index=False)
con.commit()
# Создание и заполнение словарей genders и educations
cursor.execute('DROP TABLE IF EXISTS genders')
cursor.execute('CREATE TABLE genders(genderName TEXT PRIMARY KEY )')
cursor.execute('INSERT INTO genders SELECT DISTINCT gender FROM works WHERE gender IS NOT NULL')
cursor.execute('DROP TABLE IF EXISTS educations')
cursor.execute('CREATE TABLE educations(educationType TEXT PRIMARY KEY )')
cursor.execute('INSERT INTO educations SELECT DISTINCT educationType FROM works WHERE works.educationType IS NOT NULL')
con.commit()
# "Обновление" таблицы works с добавлением в нее зависимостей
cursor.execute('CREATE TABLE new_works ('
'ID INTEGER PRIMARY KEY AUTOINCREMENT,'
'salary INTEGER,'
'educationType TEXT REFERENCES educations(educationType) ON DELETE CASCADE ON UPDATE CASCADE,'
'jobTitle TEXT,'
'qualification TEXT,'
'gender TEXT REFERENCES genders(genderName) ON DELETE CASCADE ON UPDATE CASCADE,'
'dateModify TEXT,'
'skills TEXT,'
'otherInfo TEXT)')
cursor.execute('INSERT INTO new_works SELECT * FROM works')
cursor.execute('DROP TABLE works')
cursor.execute('ALTER TABLE new_works RENAME TO works')
con.commit()