Saya baru mengenal SQL Alchemy dan membutuhkan cara untuk menjalankan skrip setiap kali entri baru ditambahkan ke tabel. Saat ini saya menggunakan metode berikut untuk menyelesaikan tugas tetapi saya yakin harus ada cara yang lebih efisien.

Saya menggunakan python 2 untuk proyek saya dan MS SQL sebagai database.

Misalkan tabel saya adalah carData dan saya menambahkan baris baru untuk detail mobil dari situs web. Data mobil baru ditambahkan ke carData. Kode saya berfungsi sebagai berikut

class CarData:
    <fields for table class>

with session_scope() as session:
    car_data = session.query(CarData)
    reference_df = pd.read_sql_query(car_data.statement, car_data.session.bind)

while True:
    with session_scope() as session:
        new_df = pd.read_sql_query(car_data.statement, car_data.session.bind)
        if len(new_df) > len(reference_df):
            print "New Car details added"
            <code to get the id of new row added>
            <run script>
            reference_df = new_df
    sleep(10)

Di atas tentu saja merupakan versi kode yang lebih sederhana yang saya gunakan tetapi idenya adalah memiliki titik referensi kemudian terus memeriksa setiap 10 detik jika ada entri baru. Namun bahkan setelah menggunakan session_scope() saya telah melihat masalah koneksi setelah beberapa hari karena skrip ini seharusnya berjalan tanpa batas.

Apakah ada cara yang lebih baik untuk mengetahui bahwa baris baru telah ditambahkan, dapatkan id dari baris baru dan jalankan skrip yang diperlukan?

0
Ashish soni 21 Mei 2021, 10:11

1 menjawab

Jawaban Terbaik

Saya yakin kesalahan yang Anda jelaskan adalah masalah konektivitas dengan database mis. masalah jaringan sementara

OperationalError: Penyedia TCP: Kode kesalahan 0x68

Jadi yang perlu Anda lakukan adalah memenuhi ini dengan penanganan kesalahan!

try:
    new_df = pd.read_sql_query(car_data.statement, car_data.session.bind)
except:
    print("Problem with query, will try again shortly")
0
gvee 21 Mei 2021, 07:37