Извлечение домена из ссылки на Python и использование SQL

#python #sql #db2

#python #sql #db2

Вопрос:

У меня есть база данных, к которой я подключаюсь с помощью Python и запускаю операторы sql следующим образом.

 import ibm_db
conn = ibm_db.connect("DATABASE=ABCD;HOSTNAME=dsomehostname.net;PORT=50001;PROTOCOL=TCPIP;UID=User1_id;PWD=Password; Security = SSL; ConnectTimeout = 30; sslConnection=TRUE","","")
connState = ibm_db.active(conn)
print(connState)
import ibm_db_dbi
# con = ibm_db_dbi.Connection(conn)

sql = "SELECT emails from Database1.Table1 WHERE TIMESTAMP>'2020-08-20' GROUP BY emails; "
stmt = ibm_db.exec_immediate(conn, sql)
dictionary = ibm_db.fetch_both(stmt)
  

Он отправляет мне электронные письма следующим образом :

 **https://abc**.ind.analytics.google.com/bs/?perspective=story
**https://abc**.ind.analytics.google.com/bs/
**https://tmb**.ind.analytics.google.com/bs/?perspective=ca-modeller
**https://fgt**.ind.analytics.google.com/bs/?perspective=explore
(null)
**https://abc**.ind.analytics.google.com/bs/?perspective=home
(null)
**https://col**.ind.analytics.google.com/bs/?perspective=classicviewer
**https://prod**.ind.analytics.google.com/bs/
(null)
**https://fcv**.ind.analytics.google.com/bs/?perspective=home
**https://prod**.health-analytics.something-else.com/bs/
(null)
**https://fcv**.health-analytics.something-else?perspective=home
  

Мне нужна только выделенная жирным шрифтом часть. т.Е. Мне нужна только часть перед «ind.analytics.google.com/bs /……» И не раньше «health-analytics.something-else.com/bs /…:

 https://abc
 https://tmb
 https://fgt
  

Есть ли способ, которым я могу включить в это регулярное выражение и запустить запрос. Будет здорово, если кто-нибудь сможет мне в этом помочь.

Комментарии:

1. Попробуйте использовать регулярное выражение, подобное этому select regexp_extract(emails, '^.*(?=(.ind.analytics.google.com))' ) from ... (где электронные письма — это ваше имя столбца)

Ответ №1:

Вы можете перебирать словарь и собирать нужные данные в список.

 emailList = []
for email in dictionary:
    domain = email.split('.')[0] // as the domain is the first element
    emailList.append(domain)
  

Комментарии:

1. спасибо за ответ . Я специально ищу регулярное выражение, так как могут быть такие письма, как: fgt.abc.database.com (null) abc .abc.database.com?перспектива=главная