Python sql menyisipkan banyak baris

Di artikel kami sebelumnya – menyisipkan baris ke tabel sqlite3, kami telah melihat cara menyisipkan satu record ke tabel. Dalam tutorial ini, kita akan mempelajari cara menyisipkan beberapa baris menggunakan satu query INSERT INTO

Langkah-langkah untuk menyisipkan banyak baris ke dalam tabel sqlite3

Langkah-langkah menyisipkan banyak record ke dalam sebuah tabel adalah

  1. Persiapkan koneksi ke database dan kemudian dapatkan kursor
  2. Dapatkan semua catatan Anda ke daftar
  3. Gunakan metode executionmany() dan teruskan kueri dan daftar catatan sebagai argumen ke metode

Contoh 1. Masukkan Beberapa Baris ke dalam Tabel sqlite

Pada contoh berikut, kita akan menyisipkan tiga record ke dalam sebuah tabel

Program Piton

import sqlite3

conn = sqlite3.connect('mysqlite.db')
c = conn.cursor()

#records or rows in a list
records = [(1, 'Glen', 8),
			(2, 'Elliot', 9),
			(3, 'Bob', 7)]

#insert multiple records in a single query
c.executemany('INSERT INTO students VALUES(?,?,?);',records);

print('We have inserted', c.rowcount, 'records to the table.')

#commit the changes to db			
conn.commit()
#close the connection
conn.close()

Untuk memeriksa apakah kueri berhasil dijalankan dan memasukkan ketiga catatan, kami telah mencetak kursor. properti jumlah baris

Keluaran

We have inserted 3 records to the table.
_

Ringkasan

Dalam tutorial Contoh Python ini, kami belajar memasukkan banyak catatan ke dalam tabel sqlite3 dalam satu kueri dengan bantuan contoh yang terperinci

Contoh berikut menggunakan ipython-sql. Untuk memasang. pip instal ipython-sql

%sql adalah perintah ajaib Jupyter dan dapat diabaikan saat tidak menggunakan notebook Jupyter

Konfigurasikan SQL untuk notebook Jupyter

Buat tabel

%%sql CREATE TABLE players (first_name, last_name, age);

Sisipkan beberapa baris rekaman ke dalam tabel menggunakan kueri SQL tunggal

%%sql  INSERT INTO players (first_name, last_name, age) VALUES  ('Lebron', 'James', 33),  ('Steph', 'Curry', 30);

Pilih semua rekaman dari tabel 'pemain' kami, untuk mengonfirmasi bahwa kami telah memasukkan baris

%%sql  --Select all records from our table 'players', to confirm we inserted rows  SELECT * FROM players
first_namelast_nameageLebronJames33StephCurry30

Penting. Perhatikan pernyataan. mydb.commit(). Diperlukan untuk melakukan perubahan, jika tidak, tidak ada perubahan yang dilakukan pada tabel


Sisipkan Beberapa Baris

Untuk menyisipkan banyak baris ke dalam tabel, gunakan metode executemany()

Parameter kedua dari metode executemany()_ adalah daftar tupel, berisi data yang ingin Anda sisipkan

Untuk Mendapatkan ID yang Dimasukkan Jika Anda ingin mendapatkan ID dari baris tertentu yang Anda masukkan maka Anda dapat melakukannya dengan menanyakan objek kursor tertentu. Penting juga bagi Anda untuk mengetahui bahwa jika Anda memasukkan lebih dari satu baris maka ID untuk baris yang Anda masukkan terakhir akan dikembalikan. Contoh sisipan mysql untuk ini disebutkan di bawah ini.  

Beberapa sisipan SQL sekaligus dengan Python dapat dilakukan dengan beberapa cara berbeda tergantung pada input data Anda dan output yang diharapkan

Anda juga dapat memeriksa

  • Cara mudah untuk mengubah kamus menjadi sisipan SQL dengan Python
  • Python 3 mengonversi kamus menjadi penyisipan SQL

Beberapa penyisipan SQL dengan PyMySQL

Opsi pertama yang dapat diingat adalah menggunakan PyMySQL dan kursor. mengeksekusi membaca daftar tupel

import pymysql

con = pymysql.connect(host="localhost", user="myuser", passwd="mypass", db="test")
cursor = con.cursor()

values_to_insert = [(1, 2, 'a'), (3, 4, 'b'), (5, 6, 'c')]
query = "INSERT INTO tab (col1, col2, col3) VALUES " + ",".join("(%s, %s, %s)" for _ in values_to_insert)
flattened_values = [item for sublist in values_to_insert for item in sublist]
cursor.execute(query, flattened_values)

con.commit()

Dalam contoh ini kami menghubungkan ke MySQL dengan pengaturan yang ditunjukkan pada kode di atas. Setelah itu kami membangun sisipan dari daftar tupel. Kode rumitnya adalah

flattened_values = [item for sublist in values_to_insert for item in sublist]
cursor.execute(query, flattened_values)
_

yang akan menghasilkan nilai untuk sisipan. Dengan menggunakan pemahaman daftar, kami membangun nilai sisipan

  • nilai_diratakan -
    flattened_values = [item for sublist in values_to_insert for item in sublist]
    cursor.execute(query, flattened_values)
    
    0
  • kueri -
    flattened_values = [item for sublist in values_to_insert for item in sublist]
    cursor.execute(query, flattened_values)
    
    _1

Beberapa sisipan SQL dari peta dengan panda

Opsi lain untuk memasukkan data dari kamus menggunakan panda dan python ditunjukkan di bawah ini

import pandas as pd
import pymysql

con = pymysql.connect(host="localhost", user="myuser", passwd="mypass", db="test")
cursor = con.cursor()

df = pd.DataFrame(mydict)
val_to_insert = df.values.tolist()

cursor.executemany("insert into tab (col1, col2, col3) values (%s, %s, %s)",
                   val_to_insert)

con.commit()
con.close()
_

dalam contoh ini kami menggunakan nilai bingkai data panda untuk mendaftar untuk memasukkan nilai produk

Menghasilkan sisipan SQL dari data csv

Jika Anda perlu memasukkan beberapa baris sekaligus dengan Python dan MySQL, Anda dapat menggunakan panda untuk menyelesaikan masalah ini dalam beberapa baris. Katakanlah data input Anda ada dalam file CSV dan Anda mengharapkan output sebagai sisipan SQL

INSERT INTO tab (`col1`, `col2`, `col3`)
VALUES (1,2,1), (1,2,2), (1,2,3);

Katakan juga bahwa Anda ingin memasukkan 5 baris sekaligus membaca file csv Anda. Ini adalah contoh data csv

col1,col2,col3
1,2,1
1,2,2
1,2,3

Di bawah ini Anda dapat menemukan kode yang akan membaca data csv, membagi data menjadi 5 dan membuat sisipan SQL

import pandas as pd

df = pd.read_csv("/home/user/Downloads/1.csv", sep=',')
cols = str(df.columns.values.tolist()).replace('[', '').replace(']', '').replace('\'', '`')

for i in range(1, df.shape[0], 5):
    values = str(df.iloc[i:i+5].values.tolist()).replace('[', '(').replace(']', ')').replace('((', '(').replace('))', ')')
    print("insert into %s ( %s ) values  %s ;" % ("tab", cols, values))

Dan sekarang beberapa penjelasan tentang kode tersebut

df = pd.read_csv("/home/user/Downloads/1.csv", sep=',')

akan membaca file csv dengan path. "/home/pengguna/Unduhan/1. csv" dan pemisah. ',' - dengan mempertimbangkan header file CSV. Akhirnya data akan dimuat sebagai bingkai data panda

cols = str(df.columns.values.tolist()).replace('[', '').replace(']', '').replace('\'', '`')

potongan kode terakhir akan membaca header dari format CSV/dataframe yang akan digunakan untuk memasukkan kolom. Ada juga pemformatan kosmetik untuk membuat SQL seperti sintaks

for i in range(1, df.shape[0], 5):
    values = str(df.iloc[i:i+5].values.tolist()).replace('[', '(').replace(']', ')').replace('((', '(').replace('))', ')')

Sekarang saatnya membaca baris dari kerangka data per blok 5. Kami menggunakan iloc untuk menemukan blok. Anda dapat mengubah nilai ini menjadi sesuatu yang paling sesuai dengan kebutuhan Anda. Dan lagi beberapa pemformatan untuk memenuhi sintaks MySQL dilakukan

Langkah terakhir adalah mencetak hasilnya di konsol. Pilihan lainnya adalah menyimpan informasi ini dalam file SQL. Solusi yang mungkin untuk python 3 adalah

Bagaimana cara memasukkan banyak baris dalam SQL dengan Python?

Untuk menyisipkan banyak baris ke dalam tabel, gunakan metode executionmany() .

Bagaimana cara memasukkan banyak baris sekaligus dalam SQL?

permintaan INSERT-SELECT-UNION untuk menyisipkan beberapa record . Kueri SQL UNION membantu memilih semua data yang telah dilampirkan oleh kueri SELECT melalui pernyataan INSERT.

Bagaimana saya bisa memasukkan 1000 baris dalam SQL sekaligus?

Untuk menjumlahkan baris, pengguna perlu menggunakan pernyataan penyisipan. .
Sintaksis
Contoh – Sebuah tabel bernama siswa harus memiliki nilai yang dimasukkan ke dalamnya. Itu harus dilakukan sebagai berikut
Keluaran –
Keluaran –
menyisipkan beberapa baris. Sebuah tabel dapat menyimpan hingga 1000 baris dalam satu pernyataan penyisipan. .
Sintaksis
Contoh – Pertimbangkan seorang siswa meja. .
Keluaran –

Metode mana yang digunakan untuk menyisipkan banyak baris dengan Python?

executemany() metode. Pada contoh di bawah ini, sebuah objek new_students berisi daftar baris yang ingin kita sisipkan.