#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?перспектива=главная