Wpis z mikrobloga

pytanie #sqlite #python

mam taki kod:

for followers_list in api.get_profile_followers(username, page=i):
c.execute ("INSERT INTO obserwuja VALUES (?)", [followers_list["login"]])

w jaki sposób zrobić żeby dane otrzymywane z api były sprawdzone pod względem duplikatów i dopisane zostały tylko nowe lub usunięte z bazy te których nie otrzymałem?
  • 15
@Moonman: najprostszy sposób (nieekonomiczny ale nie będziesz miał setek tysięcy danych więc nie są Ci potrzebne lepsze chyba że dla satysfakcji), przed executem do wprowadzenia danych komenda w stylu
if followers_list["login"] not in obserwuja:
@Daroo1: też o takim rozwiązaniu myślałem ale później chciałbym printować sobie różnice i to chyba w ten sposób nie zadziała (chyba że jeszcze nie wpadłem na pomysł jak to ogarnąć), co do satysfakcji - będzie jak mi się uda cały projekt skończyć bo to będzie pierwsze co po ukończeniu tutorialu w miarę sam napisałem :)
@biwalencik: zapoznam się z tym i nie ukrywam że czuje się przytłoczony tym co napisałeś bo wychodzi na to że cały kod będę musiał napisać od zera i pobierać dane za pomocą collections z defaultdict i później to jakimś sqlalchemy wrzucać do bazy tak? - staram się upewnić czy dobrze zrozumiałem ;)
@Moonman nie musisz. Jesli preferujesz skakanie z pythona do Sqla. Ale co jesli postanowisz zmienic baze danych na postgres, albo cis innego?
Wtedy masz piekny, obiektosy kod w pythonie i podmieniasz tylko jrdna linijke.

Ormy pozwalaja na zachowanie kodu w niemal idenrycznej postaci. Zmieniasz tylko silnik komunimacji z baza. Latwei male jest peewee. Sqlite alchemy na potem :-)

Ale defaultdict sobie postudiuj. Caly modul collecrions to perelka.
@biwalencik: no to spróbuję to ogarnąć twoim sposobem i zaraz okaże się że trzeba było tak od początku robić, a nie szukać dziwnych rozwiązań typu ładowanie X stron za pomocą for i in range :D
@Moonman : Jak już zauważyłeś, moje palce nie nadają się absolutnie do pisania na androidowym ekranie dotykowym wielkości 5''. Dlatego, kiedy pisze z andka, popełniam masę literówek, które głupi słownik przeinacza czasami na kosmiczne słowa. Ale mam nadzieję, że sedno wypowiedzi pozostaje zrozumiałe.