Database - Veritabanı
MS SQL Veritabanından Python İle Veri Çekme Sorunu, Socket.IO
MS SQL Veritabanından Python İle Veri Çekme Sorunu, Socket.IO
-
Localde çalışacak bir program yapıyorum.
Veritabanı olarak Ms SQL (SQL server 2008)
Masaüstü program için Python
Mobil uygulama için Kotlin kullanılıyor.
Python ile Kotlin arasında socket bağlantısı kurdum ve veritabanındanki değişiklikleri mobil cihaza atmam gerekiyor. (Sadece tek tabloyu kontrol edeceğim)
Sıkıntım da burada başlıyor. Ms SQL Veritabanındaki değişiklikleri python ile nasıl algılayabilirim.
Normalde postresql gibi bir veritabanı olsa sunucudaki değişiklikleri alırım ancak MS SQL de bu nasıl olur?
Şu an için aklıma gelen tek çözüm 10 sn de bir timer atıp sunucudaki değişiklikleri alıp mobil cihaza atmak.
Yardım ederseniz sevinirim.
(SQL Server Change Tracking diye bir şey denedim. Tablodaki değişiklikleri algılayıp başka bir alana atıyor. Ancak yine aynı sorun oluyor sunucuda olan değişiklik python tarafına nasıl ulaşacak)
-
server nerde aga onu bulamadım? mobil ve desktop direk DB yemi bağlanıyor?
-
"Normalde postresql gibi bir veritabanı olsa sunucudaki değişiklikleri alırım ancak MS SQL de bu nasıl olur?" şu kısmı anlayamadım postgrede nasıl alıyordun da mssql'de işe yaramıyor?
Bir de desktop için phyton , mobil için kotlin demişsin o ikisini de soketten birbirine bağladım demişsin desktop uygulama ile mobil uygulamayı direk birbiriyle mi konuşturuyrsun soketten yanlış mı anlıyorum?
DB'den bağımsız olarak desktop/mobil farketmeksizin db'ye attığın her kayıt sonrası gruplara yayınlasan, desktop/mobil farketmeden soketten dinlesen değişiklikleri öyle yakalasan olmaz mı? -
firebase kullan
-
python olayini bilmem ama .net tarafinda sqldependency kullanabilirsin, belki python tarafinda da bir karsiligi vardir
ayrica degisiklik yapildigini neden tespit etmen lazim onu anlamis degilim. Bu degisikligi, python yapmiyor mu? insert into ya da bir kütüphane kullaniyorsan insert metodundan dönen sonuc >0 ise, demek ki kayit eklenmis. O durumda direk mobil uygulamaya, yeni satir eklendi/update edildi diyemiyor musun? O zaman DB'yi dinlemene gerek kalmiyor.
Yok 3. bir uygulama veritabanina kayit ekliyorsa; o zaman söyle yapabilirsin (üstteki sqldependency haric)
ayri bir tablo olusturacaksin, daha sonra ana tablon icin bir trigger yazacaksin, o tabloya veri eklendiginde/güncellendiginde, bu trigger, diger tabloya bunu yazacak (mesela yeni satirin ID'si yazilabilir). Daha sonra senin python uygulaman bu tabloyu ara ara kontrol edecek, ve orada kayit varsa, ana tablodan veriyi cekip, o tablodaki kaydi silecek.
-
yolbulucu bunu yazdı
firebase kullan
yine mssql'deki degisikler icin bir listener'a ihtiyaci var ki firebase'e cekebilsin veriyi.
sorun kullanilan veritabanini degistirme sansinin olmamasi sanirim.
shock56 bunu yazdı(SQL Server Change Tracking diye bir şey denedim. Tablodaki değişiklikleri algılayıp başka bir alana atıyor. Ancak yine aynı sorun oluyor sunucuda olan değişiklik python tarafına nasıl ulaşacak)
baska bir alana atiyor demissin ya,
o alana bir sey atilmasi durumu icin (insert/update) bir trigger set et, o trigger da bir python scriptini execute etsin.
python scripti de websocket'ine yeni eklenen verileri emit etsin. (baska bir alana atiyor dedigin verileri select ile alip dinleme yaptigin socket kanalina yayinlayacak.)
edit:
https://www.sqlshack.com/different-approaches-to-execute-python-in-sql-server/
select ile almak yerine trigger'a gelen updated/inserted columnlari arguman olarak verirsen concurrency problemi de yasamazsin :)
end tarafından 30/Eyl/22 15:44 tarihinde düzenlenmiştir -
end bunu yazdıyolbulucu bunu yazdı
firebase kullan
yine mssql'deki degisikler icin bir listener'a ihtiyaci var ki firebase'e cekebilsin veriyi.
sorun kullanilan veritabanini degistirme sansinin olmamasi sanirim.
shock56 bunu yazdı(SQL Server Change Tracking diye bir şey denedim. Tablodaki değişiklikleri algılayıp başka bir alana atıyor. Ancak yine aynı sorun oluyor sunucuda olan değişiklik python tarafına nasıl ulaşacak)
baska bir alana atiyor demissin ya,
o alana bir sey atilmasi durumu icin (insert/update) bir trigger set et, o trigger da bir python scriptini execute etsin.
python scripti de websocket'ine yeni eklenen verileri emit etsin. (baska bir alana atiyor dedigin verileri select ile alip dinleme yaptigin socket kanalina yayinlayacak.)
edit:
https://www.sqlshack.com/different-approaches-to-execute-python-in-sql-server/
select ile almak yerine trigger'a gelen updated/inserted columnlari arguman olarak verirsen concurrency problemi de yasamazsin :)
e adam python dan zaten bildirim atıyo, firebase e atacak bildirimi
-
yolbulucu bunu yazdıend bunu yazdıyolbulucu bunu yazdı
firebase kullan
yine mssql'deki degisikler icin bir listener'a ihtiyaci var ki firebase'e cekebilsin veriyi.
sorun kullanilan veritabanini degistirme sansinin olmamasi sanirim.
shock56 bunu yazdı(SQL Server Change Tracking diye bir şey denedim. Tablodaki değişiklikleri algılayıp başka bir alana atıyor. Ancak yine aynı sorun oluyor sunucuda olan değişiklik python tarafına nasıl ulaşacak)
baska bir alana atiyor demissin ya,
o alana bir sey atilmasi durumu icin (insert/update) bir trigger set et, o trigger da bir python scriptini execute etsin.
python scripti de websocket'ine yeni eklenen verileri emit etsin. (baska bir alana atiyor dedigin verileri select ile alip dinleme yaptigin socket kanalina yayinlayacak.)
edit:
https://www.sqlshack.com/different-approaches-to-execute-python-in-sql-server/
select ile almak yerine trigger'a gelen updated/inserted columnlari arguman olarak verirsen concurrency problemi de yasamazsin :)
e adam python dan zaten bildirim atıyo, firebase e atacak bildirimi
abi adam socket uzerinden mobil uygulamaya bildirim atabiliyormus ama veritabanindaki degisiklikleri track edemiyormus realtime olarak. sorusu da aslen su, "ben mssql serverda olan degisikleri pythonda nasil yakalarim?"
end tarafından 30/Eyl/22 16:08 tarihinde düzenlenmiştir -
end bunu yazdıyolbulucu bunu yazdıend bunu yazdıyolbulucu bunu yazdı
firebase kullan
yine mssql'deki degisikler icin bir listener'a ihtiyaci var ki firebase'e cekebilsin veriyi.
sorun kullanilan veritabanini degistirme sansinin olmamasi sanirim.
shock56 bunu yazdı(SQL Server Change Tracking diye bir şey denedim. Tablodaki değişiklikleri algılayıp başka bir alana atıyor. Ancak yine aynı sorun oluyor sunucuda olan değişiklik python tarafına nasıl ulaşacak)
baska bir alana atiyor demissin ya,
o alana bir sey atilmasi durumu icin (insert/update) bir trigger set et, o trigger da bir python scriptini execute etsin.
python scripti de websocket'ine yeni eklenen verileri emit etsin. (baska bir alana atiyor dedigin verileri select ile alip dinleme yaptigin socket kanalina yayinlayacak.)
edit:
https://www.sqlshack.com/different-approaches-to-execute-python-in-sql-server/
select ile almak yerine trigger'a gelen updated/inserted columnlari arguman olarak verirsen concurrency problemi de yasamazsin :)
e adam python dan zaten bildirim atıyo, firebase e atacak bildirimi
abi adam socket uzerinden mobil uygulamaya bildirim atabiliyormus ama veritabanindaki degisiklikleri track edemiyormus realtime olarak. sorusu da aslen su, "ben mssql serverda olan degisikleri pythonda nasil yakalarim?"
@end teşekkürler. Benim sormak istediğim sorunu tek cümlede açıklamışsın :) "ben mssql serverda olan degisikleri pythonda nasil yakalarim?"
Söylemiş olduğun yöntemi deneyeceğim.