Memerintahkan server untuk menutup dan membebaskan sumber daya server terkait. Server akan secara otomatis menutup kursor yang tidak memiliki hasil yang tersisa, serta kursor yang tidak digunakan selama beberapa waktu dan tidak memiliki opsi Show Saat Anda membuka kursor, kursor ditempatkan sebelum baris pertama; . Lebih dari satu kursor dapat dibuka secara bersamaan Anda dapat menggunakan klausa hanya baca jika Anda tidak bermaksud untuk menulis atau menghapus data; . pembaruan yang ditangguhkan. Menentukan untuk readonly dapat mempercepat pemrosesan. Jika Anda mencoba menulis data menggunakan kursor yang dibuka hanya untuk dibaca, Server DBMS akan mengeluarkan kesalahan runtime Pernyataan close mengakhiri pemrosesan kursor ## tutup cursor cursor_name Kursor dapat dibuka dan ditutup beberapa kali; . Menutup dan membuka kembali kursor akan memposisikannya kembali ke bagian atas tabel Kursor tidak dapat tetap terbuka di seluruh transaksi; Mengizinkan kode Python untuk mengeksekusi perintah PostgreSQL dalam sesi basis data. Kursor dibuat dengan metode tersebut. mereka terikat pada koneksi seumur hidup dan semua perintah dijalankan dalam konteks sesi database yang dibungkus oleh koneksi Kursor yang dibuat dari koneksi yang sama tidak diisolasi, mis. e. , setiap perubahan yang dilakukan pada database oleh kursor akan langsung terlihat oleh kursor lainnya. Kursor yang dibuat dari koneksi yang berbeda dapat atau tidak dapat diisolasi, tergantung pada koneksinya. Lihat juga dan metode Kursor tidak aman untuk thread. aplikasi multithread dapat membuat banyak kursor dari koneksi yang sama dan harus menggunakan setiap kursor dari satu thread. Lihat detailnya Kursor dapat digunakan sebagai pengelola konteks. meninggalkan konteks akan menutup kursor with conn.cursor() as curs: curs.execute(SQL) # the cursor is now closedketerangan Atribut hanya-baca yang mendeskripsikan hasil kueri. Ini adalah urutan instance, masing-masing menggambarkan satu kolom hasil secara berurutan. Atributnya adalah >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)9 untuk operasi yang tidak mengembalikan baris atau jika kursor belum memiliki operasi yang dipanggil melalui metode Untuk kompatibilitas dengan DB-API, setiap objek dapat dibongkar sebagai urutan 7 item. atribut yang disetel ulang dengan cara ini adalah sebagai berikut. Untuk perincian lebih lanjut dan atribut lain yang tersedia, periksa dokumentasi
Berubah di versi 2. 4. jika memungkinkan, deskripsi kolom diberi nama tuple, bukan tuple biasa. Berubah di versi 2. 8. deskripsi kolom adalah turunan dari >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)8, menampilkan atribut tambahan. tutup() Tutup kursor sekarang (daripada setiap kali >>> cur.execute("SELECT * FROM test;") >>> for record in cur: .. print record ... (1, 100, "abc'def") (2, None, 'dada') (3, 42, 'bar')5 dijalankan). Kursor tidak akan dapat digunakan sejak saat ini; Berubah di versi 2. 5. jika kursor digunakan dalam pernyataan >>> cur.execute("SELECT * FROM test;") >>> for record in cur: .. print record ... (1, 100, "abc'def") (2, None, 'dada') (3, 42, 'bar')7, metode secara otomatis dipanggil di akhir blok >>> cur.execute("SELECT * FROM test;") >>> for record in cur: .. print record ... (1, 100, "abc'def") (2, None, 'dada') (3, 42, 'bar')7. tertutup Atribut boolean hanya-baca. menentukan apakah kursor ditutup ( >>> cur.execute("SELECT * FROM test;") >>> for record in cur: .. print record ... (1, 100, "abc'def") (2, None, 'dada') (3, 42, 'bar')_9) atau tidak ( >>> cur.execute("SELECT * FROM test WHERE id = %s", (3,)) >>> cur.fetchone() (3, 42, 'bar')0) ekstensi API DB Atributnya adalah ekstensi Psycopg ke DB API 2. 0 Baru di versi 2. 0. 7 koneksiAtribut read-only mengembalikan referensi ke objek tempat kursor dibuat namaAtribut hanya-baca yang berisi nama kursor jika dibuat sebagai kursor bernama oleh , atau >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)9 jika itu adalah kursor sisi klien. Lihat ekstensi API DB Atributnya adalah ekstensi Psycopg ke DB API 2. 0 dapat digulirBaca/tulis atribut. menentukan apakah kursor bernama dinyatakan >>> cur.execute("SELECT * FROM test WHERE id = %s", (3,)) >>> cur.fetchone() (3, 42, 'bar')6, maka dapat menggulir mundur (menggunakan ). Jika >>> cur.execute("SELECT * FROM test;") >>> for record in cur: .. print record ... (1, 100, "abc'def") (2, None, 'dada') (3, 42, 'bar')_9, kursor dapat digulir mundur, jika >>> cur.execute("SELECT * FROM test WHERE id = %s", (3,)) >>> cur.fetchone() (3, 42, 'bar')0 tidak pernah dapat digulir. Jika >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)_9 (default) opsi gulir kursor tidak ditentukan, biasanya tetapi tidak selalu berarti tidak ada gulir ke belakang (lihat ) Catatan tetapkan nilai sebelum memanggil atau gunakan parameter yang dapat digulir, jika tidak, nilainya tidak akan berpengaruh Baru di versi 2. 5 ekstensi API DB Atributnya adalah ekstensi Psycopg ke DB API 2. 0 menahanBaca/tulis atribut. menentukan apakah umur kursor bernama harus diperpanjang di luar transaksi saat ini, i. e. , dimungkinkan untuk mengambil dari kursor bahkan setelah a (tetapi tidak setelah a ). Lihat Catatan tetapkan nilai sebelum memanggil atau gunakan parameter pemotongan, jika tidak, nilainya tidak akan berpengaruh Baru di versi 2. 4. 3 ekstensi API DB Atributnya adalah ekstensi Psycopg ke DB API 2. 0 Metode eksekusi perintah eksekusi(kueri , vars=Tidak ada)Jalankan operasi basis data (permintaan atau perintah) Parameter dapat diberikan sebagai urutan atau pemetaan dan akan terikat pada variabel dalam operasi. Variabel ditentukan baik dengan placeholder posisi ( >>> cur.execute("SELECT * FROM test;") >>> cur.fetchall() [(1, 100, "abc'def"), (2, None, 'dada'), (3, 42, 'bar')]0) atau bernama ( >>> cur.execute("SELECT * FROM test;") >>> cur.fetchall() [(1, 100, "abc'def"), (2, None, 'dada'), (3, 42, 'bar')]1). Lihat Metode mengembalikan >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)_9. Jika kueri dieksekusi, nilai yang dikembalikan dapat diambil menggunakan metodeeksekusi(kueri , vars_list) Jalankan operasi basis data (kueri atau perintah) terhadap semua tupel parameter atau pemetaan yang ditemukan dalam urutan vars_list Fungsi ini sebagian besar berguna untuk perintah yang memperbarui database. set hasil apa pun yang dikembalikan oleh kueri akan dibuang Parameter dibatasi ke kueri menggunakan aturan yang sama yang dijelaskan dalam metode >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)_ Peringatan Dalam penerapannya saat ini, metode ini tidak lebih cepat daripada mengeksekusi dalam satu lingkaran. Untuk kinerja yang lebih baik, Anda dapat menggunakan fungsi yang dijelaskan di callproc(procname[ , parameter])Panggil prosedur database tersimpan dengan nama yang diberikan. Urutan parameter harus berisi satu entri untuk setiap argumen yang diharapkan oleh prosedur. Prosedur kelebihan beban didukung. Parameter bernama dapat digunakan dengan menyediakan parameter sebagai kamus Fungsi ini, saat ini, tidak sesuai dengan DBAPI. Nilai pengembalian seharusnya terdiri dari urutan parameter dengan output yang dimodifikasi dan parameter input/output. Di versi yang akan datang, nilai pengembalian yang sesuai dengan DBAPI dapat diimplementasikan, tetapi untuk saat ini fungsi mengembalikan Tidak Ada Prosedur dapat memberikan hasil yang ditetapkan sebagai output. Ini kemudian tersedia melalui metode standar Berubah di versi 2. 7. menambahkan dukungan untuk argumen bernama. Catatan >>> cur.execute("SELECT * FROM test;") >>> cur.fetchall() [(1, 100, "abc'def"), (2, None, 'dada'), (3, 42, 'bar')]_7 hanya dapat digunakan dengan fungsi PostgreSQL, bukan dengan prosedur yang diperkenalkan di PostgreSQL 11, yang memerlukan pernyataan >>> cur.execute("SELECT * FROM test;") >>> cur.fetchall() [(1, 100, "abc'def"), (2, None, 'dada'), (3, 42, 'bar')]8 untuk dijalankan. Silakan gunakan normal untuk menjalankannyamogrify(operasi[ , parameter]) Kembalikan string kueri setelah pengikatan argumen. String yang dikembalikan persis seperti yang akan dikirim ke database yang menjalankan metode atau serupa String yang dikembalikan selalu merupakan string byte >>> cur.mogrify("INSERT INTO test (num, data) VALUES (%s, %s)", (42, 'bar')) "INSERT INTO test (num, data) VALUES (42, E'bar')" ekstensi API DB Metodenya adalah ekstensi Psycopg ke DB API 2. 0 setinputsizes(ukuran)Metode ini diekspos sesuai dengan DB API 2. 0. Saat ini tidak melakukan apa-apa tetapi aman untuk menyebutnya Metode pengambilan hasil Metode berikut digunakan untuk membaca data dari database setelah panggilan Catatan objek dapat diubah, jadi, alih-alih memanggil secara eksplisit dalam satu lingkaran, objek itu sendiri dapat digunakan >>> cur.execute("SELECT * FROM test;") >>> for record in cur: .. print record ... (1, 100, "abc'def") (2, None, 'dada') (3, 42, 'bar')_ Berubah di versi 2. 4. mengulang pada mengambil catatan pada waktu dari backend. Sebelumnya hanya satu rekaman yang diambil per perjalanan pulang pergi, yang menghasilkan biaya tambahan yang besar. ambil()Ambil baris berikutnya dari rangkaian hasil kueri, kembalikan satu tupel, atau >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)9 saat tidak ada lagi data yang tersedia >>> cur.execute("SELECT * FROM test WHERE id = %s", (3,)) >>> cur.fetchone() (3, 42, 'bar') A dinaikkan jika panggilan sebelumnya ke tidak menghasilkan set hasil apa pun atau belum ada panggilan yang dikeluarkan ambil banyak([ukuran=kursor. ukuran array])Ambil set baris berikutnya dari hasil kueri, mengembalikan daftar tupel. Daftar kosong dikembalikan ketika tidak ada lagi baris yang tersedia Jumlah baris untuk diambil per panggilan ditentukan oleh parameter. Jika tidak diberikan, kursor akan menentukan jumlah baris yang akan diambil. Metode harus mencoba mengambil baris sebanyak yang ditunjukkan oleh parameter ukuran. Jika ini tidak memungkinkan karena jumlah baris yang ditentukan tidak tersedia, lebih sedikit baris yang dapat dikembalikan >>> cur.execute("SELECT * FROM test;") >>> cur.fetchmany(2) [(1, 100, "abc'def"), (2, None, 'dada')] >>> cur.fetchmany(2) [(3, 42, 'bar')] >>> cur.fetchmany(2) [] A dinaikkan jika panggilan sebelumnya ke tidak menghasilkan set hasil apa pun atau belum ada panggilan yang dikeluarkan Perhatikan ada pertimbangan kinerja yang terlibat dengan parameter ukuran. Untuk performa optimal, biasanya yang terbaik adalah menggunakan atribut. Jika parameter ukuran digunakan, maka yang terbaik adalah mempertahankan nilai yang sama dari satu panggilan ke panggilan berikutnya ambil()Ambil semua baris (yang tersisa) dari hasil kueri, kembalikan sebagai daftar tupel. Daftar kosong dikembalikan jika tidak ada lagi catatan untuk diambil >>> cur.execute("SELECT * FROM test;") >>> cur.fetchall() [(1, 100, "abc'def"), (2, None, 'dada'), (3, 42, 'bar')] A dinaikkan jika panggilan sebelumnya ke tidak menghasilkan set hasil apa pun atau belum ada panggilan yang dikeluarkan gulir(nilai[ , mode='relatif'])Gulir kursor pada hasil yang diatur ke posisi baru menurut mode Jika >>> cur.execute("INSERT INTO test (num, data) VALUES (%s, %s)", (42, 'bar')) >>> cur.query "INSERT INTO test (num, data) VALUES (42, E'bar')"6 adalah >>> cur.execute("INSERT INTO test (num, data) VALUES (%s, %s)", (42, 'bar')) >>> cur.query "INSERT INTO test (num, data) VALUES (42, E'bar')"7 (default), nilai diambil sebagai offset ke posisi saat ini di set hasil, jika diatur ke >>> cur.execute("INSERT INTO test (num, data) VALUES (%s, %s)", (42, 'bar')) >>> cur.query "INSERT INTO test (num, data) VALUES (42, E'bar')"8, nilai menyatakan posisi target absolut Jika operasi gulir meninggalkan set hasil, a dinaikkan dan posisi kursor tidak diubah Catatan Menurut DB API 2. 0, pengecualian yang dimunculkan untuk kursor di luar batas seharusnya adalah >>> cur.execute("INSERT INTO test (num, data) VALUES (%s, %s)", (42, 'bar')) >>> cur.statusmessage 'INSERT 0 1'0. Opsi terbaik mungkin menangkap kedua pengecualian dalam kode Anda try: cur.scroll(1000 * 1000) except (ProgrammingError, IndexError), exc: deal_with_it(exc) Metode ini dapat digunakan untuk kursor sisi klien dan. Kursor sisi server biasanya dapat menggulir mundur hanya jika dideklarasikan. Memindahkan keluar dari batas di kursor sisi server tidak menghasilkan pengecualian, jika backend tidak memunculkan apa pun (Postgres tidak memberi tahu kami dengan cara yang dapat diandalkan jika kami keluar dari batas) ukuran arrayAtribut baca/tulis ini menentukan jumlah baris yang akan diambil sekaligus. Standarnya adalah 1 artinya mengambil satu baris sekaligus itersizeAtribut baca/tulis yang menentukan jumlah baris yang akan diambil dari backend pada setiap perjalanan bolak-balik jaringan selama a. Standarnya adalah 2000 Baru di versi 2. 4 ekstensi API DB Atributnya adalah ekstensi Psycopg ke DB API 2. 0 jumlah barisAtribut read-only ini menentukan jumlah baris yang terakhir diproduksi (untuk pernyataan DQL seperti >>> cur.execute("INSERT INTO test (num, data) VALUES (%s, %s)", (42, 'bar')) >>> cur.statusmessage 'INSERT 0 1'5) atau terpengaruh (untuk pernyataan DML seperti >>> cur.execute("INSERT INTO test (num, data) VALUES (%s, %s)", (42, 'bar')) >>> cur.statusmessage 'INSERT 0 1'6 atau >>> cur.execute("INSERT INTO test (num, data) VALUES (%s, %s)", (42, 'bar')) >>> cur.statusmessage 'INSERT 0 1'7) Atributnya adalah -1 jika tidak ada >>> cur.mogrify("INSERT INTO test (num, data) VALUES (%s, %s)", (42, 'bar')) "INSERT INTO test (num, data) VALUES (42, E'bar')"_0 yang dilakukan pada kursor atau jumlah baris dari operasi terakhir jika tidak dapat ditentukan oleh antarmuka Catatan API DB 2. 0 cadangan antarmuka untuk mendefinisikan kembali kasus terakhir agar objek mengembalikan >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)9 alih-alih -1 di versi spesifikasi yang akan datangnomor baris Atribut read-only ini menyediakan indeks kursor berbasis 0 saat ini di set hasil atau >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)9 jika indeks tidak dapat ditentukan Indeks dapat dilihat sebagai indeks kursor secara berurutan (rangkaian hasil). Operasi pengambilan berikutnya akan mengambil baris yang diindeks dalam urutan tersebut lastrowidAtribut read-only ini menyediakan OID dari baris terakhir yang disisipkan oleh kursor. Jika tabel tidak dibuat dengan dukungan OID atau operasi terakhir bukan penyisipan catatan tunggal, atribut diatur ke >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)9 Catatan PostgreSQL saat ini menyarankan untuk tidak membuat OID pada tabel dan default untuk >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)03 adalah tidak mendukungnya. Sintaks >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)04 tersedia dari PostgreSQL 8. 3 memungkinkan lebih banyak fleksibilitaspertanyaan Atribut hanya-baca yang berisi isi kueri terakhir yang dikirim ke backend (termasuk argumen terikat) sebagai string byte. >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)_9 jika belum ada kueri yang dijalankan >>> cur.execute("INSERT INTO test (num, data) VALUES (%s, %s)", (42, 'bar')) >>> cur.query "INSERT INTO test (num, data) VALUES (42, E'bar')" ekstensi API DB Atributnya adalah ekstensi Psycopg ke DB API 2. 0 pesan statusAtribut read-only yang berisi pesan yang dikembalikan oleh perintah terakhir >>> cur.execute("INSERT INTO test (num, data) VALUES (%s, %s)", (42, 'bar')) >>> cur.statusmessage 'INSERT 0 1' ekstensi API DB Atributnya adalah ekstensi Psycopg ke DB API 2. 0 cast(oid , s)Mengonversi nilai dari representasi string PostgreSQL ke objek Python Gunakan typecaster paling spesifik yang didaftarkan oleh Baru di versi 2. 4 ekstensi API DB Metodenya adalah ekstensi Psycopg ke DB API 2. 0 tzinfo_factoryPabrik zona waktu digunakan untuk menangani tipe data seperti >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)10. Itu harus menjadi objek. Default adalah Berubah di versi 2. 9. sebelumnya bawaan pabriknya. set berikutnya()Metode ini tidak didukung (PostgreSQL tidak memiliki banyak kumpulan data) dan akan menimbulkan pengecualian setoutputsize(ukuran[ , kolom])Metode ini diekspos sesuai dengan DB API 2. 0. Saat ini tidak melakukan apa-apa tetapi aman untuk menyebutnya Metode terkait COPY Salin data secara efisien dari objek seperti file ke database dan sebaliknya. Lihat untuk ikhtisar ekstensi API DB Perintah >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)15 adalah ekstensi PostgreSQL ke standar SQL. Dengan demikian, dukungannya adalah ekstensi Psycopg ke DB API 2. 0salin_dari(file , tabel , sep='\\t' , null='\\\\N' , ukuran=8192 , kolom=Tidak ada) Baca data dari file objek seperti file yang menambahkannya ke tabel bernama tabel Parameter
Contoh >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)_0 Berubah di versi 2. 0. 6. menambahkan parameter kolom. Berubah di versi 2. 4. data yang dibaca dari file yang mengimplementasikan antarmuka dikodekan dalam koneksi saat dikirim ke backend. Berubah di versi 2. 9. nama tabel dan field sekarang dikutip. Jika Anda perlu menentukan tabel yang memenuhi syarat skema, silakan gunakan. copy_to(file , tabel , sep='\\t' , null='\\\\N' , kolom=Tidak ada)Tulis konten tabel bernama tabel ke file objek seperti file. Lihat untuk ikhtisar Parameter
Contoh >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)_1 Berubah di versi 2. 0. 6. menambahkan parameter kolom. Berubah di versi 2. 4. data yang dikirim ke file yang mengimplementasikan antarmuka didekodekan dalam koneksi saat dibaca dari backend. Berubah di versi 2. 9. nama tabel dan field sekarang dikutip. Jika Anda perlu menentukan tabel yang memenuhi syarat skema, silakan gunakan. copy_expert(sql , berkas , ukuran=8192)Kirimkan pernyataan >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)_15 yang dibuat oleh pengguna. Metode ini berguna untuk menangani semua parameter yang disediakan PostgreSQL (lihat dokumentasi perintah >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)15)Parameter
Pernyataan sql harus dalam bentuk >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)33 untuk mengekspor >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)34 ke objek file yang diteruskan sebagai argumen atau >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)35 untuk mengimpor konten objek file ke >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)34. Jika Anda perlu membuat pernyataan >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)_15 secara dinamis (karena tabel, bidang, atau parameter kueri ada dalam variabel Python), Anda dapat menggunakan objek yang disediakan oleh modul file harus berupa objek seperti file yang dapat dibaca (seperti yang dipersyaratkan oleh ) untuk pernyataan sql >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)40 atau objek yang dapat ditulis (seperti yang dipersyaratkan oleh ) untuk >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)42 Contoh >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)_2 Baru di versi 2. 0. 6 Berubah di versi 2. 4. berkas yang mengimplementasikan antarmuka ditangani menggunakan data Unicode, bukan byte. Interoperasi dengan modul C API lainnya presult_ptrKembalikan internal kursor >>> nums = ((1,), (5,), (10,)) >>> cur.executemany("INSERT INTO test (num) VALUES (%s)", nums) >>> tuples = ((123, "foo"), (42, "bar"), (23, "baz")) >>> cur.executemany("INSERT INTO test (num, data) VALUES (%s, %s)", tuples)_44 sebagai bilangan bulat. Berguna untuk meneruskan struktur hasil mentah libpq ke fungsi C, mis. g. melalui Apa yang dilakukan kursor dekat ()?close(). Gunakan close() saat Anda selesai menggunakan kursor. Metode ini menutup kursor, menyetel ulang semua hasil, dan memastikan bahwa objek kursor tidak memiliki referensi ke objek koneksi aslinya .
Apakah perlu untuk menutup koneksi MySQL dengan python?Jika Anda mengakses MySQL secara langsung, seperti yang Anda lakukan pada contoh kode di atas, maka ya, Anda harus memutuskan sambungan secara eksplisit .
Apa yang dilakukan kursor () dengan python?Memungkinkan kode Python untuk mengeksekusi perintah PostgreSQL dalam sesi basis data . Kursor dibuat oleh koneksi. metode kursor(). mereka terikat pada koneksi seumur hidup dan semua perintah dijalankan dalam konteks sesi database yang dibungkus oleh koneksi.
Bagaimana cara menghapus kursor dengan python?Pergi ke Solusi. Kemudian atur baris[1] = Tidak ada. Dengan menggunakan kursor pembaruan, Anda dapat memindahkan nilai baris[1] ke dalam baris[2], lalu menghapus (atur ke Tidak ada) nilai dalam baris[1] |