You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.7 KiB
51 lines
1.7 KiB
import pandas as pd |
|
from sqlalchemy import create_engine |
|
|
|
def search(s): |
|
# Create the database engine and session |
|
engine = create_engine('sqlite:///fb_sweden.db') |
|
|
|
if any([all([s[:2]=='07', len(s)==10]), all([s[:2]=='46', len(s)==11])]): |
|
column_search = 'phone' |
|
column_find = 'id' |
|
else: |
|
column_search = 'id' |
|
column_find = 'phone' |
|
|
|
# Construct SQL query. |
|
sql = f'select * from sweden where {column_search} = {s}' |
|
|
|
# Make a df from query. |
|
df = pd.read_sql(sql, engine, dtype={'last_name':str, 'first_name':str}) |
|
|
|
if len(df) > 0: |
|
# Format data returned. |
|
name = f"{df['first_name'][0]} {df['last_name'][0]}" |
|
r = str(df[column_find][0]) |
|
if column_find == 'phone': |
|
r = f'0{r[2:4]} - {r[4:7]} {r[7:9]} {r[9:]}' |
|
column_find = 'telefon' |
|
column_search = 'ID' |
|
else: |
|
column_find = 'ID' |
|
column_search = 'Telefon' |
|
|
|
df['born'] = df['born'].apply(lambda x: f'{x[6:]}-{x[:2]}-{x[3:5]}') |
|
df = pd.DataFrame(df.transpose()) |
|
df.columns = [s] |
|
df.rename({'first_name': 'Förnamn', |
|
'last_name':'Efternamn', |
|
'phone':'Telefon', 'email':'Epost', |
|
'sex': 'Kön', |
|
'city': 'Från', |
|
'relation_status':'Relation', |
|
'work': 'Arbetsplats', |
|
'place': 'Bor i', |
|
'year': 'År', |
|
'born': 'Född', |
|
'id': 'ID' |
|
}, axis=0, inplace=True) |
|
df.dropna(inplace=True) |
|
df = df.drop(column_search) |
|
|
|
return ({'find': r, 'column_find': column_find, 'name': name, 'df':df})
|
|
|