Python sqlite3 chèn không hoạt động



ví dụ/sqlite/sql_insert. py

import sqlite3

sql = 'INSERT INTO companies (name, employees, established) VALUES (?, ?, ?)'

def insert_one(conn, crs):
    company_name = 'Hostlocal'
    employee_count = 1
    year_of_establishment = 2000

    try:
        crs.execute(sql, (company_name, employee_count, year_of_establishment))
    except sqlite3.IntegrityError as err:
        print('sqlite error: ', err.args[0]) # column name is not unique
    conn.commit()


def insert_many(conn, crs):
    companies = [
        ('Google',    150_028, 1998),
        ('Facebook',   68_177, 2003),
        ('Apple',     154_000, 1977),
        ('Microsoft', 181_000, 1975),
    ]

    try:
        crs.executemany(sql, companies)
    except sqlite3.IntegrityError as err:
        print(f'sqlite error: {err.args[0]}')
    conn.commit()


def main():
    conn = sqlite3.connect("companies.db")
    crs = conn.cursor()
    insert_one(conn, crs)
    insert_many(conn, crs)
    conn.close()
    print('done')

main()
  • Sử dụng trình giữ chỗ (?) cung cấp dữ liệu theo bộ và để tránh các bảng Bobby

Lệnh INSERT được sử dụng để tạo các hàng mới trong bảng đã chỉ định. INSERT hoạt động trên một bảng và có thể chèn từng hàng một hoặc nhiều hàng cùng một lúc bằng lệnh SELECT. Câu lệnh này là một phần của Ngôn ngữ thao tác dữ liệu SQL, DML

cú pháp

INSERT [OR conflict-algorithm]
INTO [database-name .] table-name [(column-list)]
VALUES (value-list)	

Ở đây chúng ta sẽ tạo một bảng mới prod_mast

CREATE TABLE hrdb.prod_mast(
prod_id integer PRIMARY KEY,
prod_name text(20),
prod_rate integer,
prod_qc text(10) DEFAULT 'OK');
	

Ví dụ

Sau đây là câu lệnh SQL INSERT cơ bản. Chúng tôi đã chỉ định tất cả các tên cột sau tên bảng và tất cả các giá trị sau từ khóa GIÁ TRỊ

INSERT INTO prod_mast(prod_id, prod_name, prod_rate, prod_qc)
VALUES(1, 'Pancakes', 75, 'OK');

Đây là hàng đã chèn

sqlite> SELECT * FROM prod_mast;
prod_id               prod_name   prod_rate   prod_qc
--------------------  ----------  ----------  ----------
1                     Pancakes    75          OK

Chèn giá trị không có cột PRIMARY KEY

INSERT INTO prod_mast(prod_name, prod_rate, prod_qc)
VALUES('Gulha', 55, 'Problems');

Ví dụ trên cho thấy cột prod_id không được bao gồm trong danh sách cột. Vì cột prod_id được định nghĩa là INTEGER PRIMARY KEY, do đó, cột này được SQLite tự động tăng. Như vậy rõ ràng là thư viện SQLite thêm id mới

Đây là hàng đã chèn

sqlite> SELECT * FROM prod_mast;
prod_id          prod_name   prod_rate   prod_qc
---------------  ----------  ----------  ----------
1                Pancakes    75          OK
2                Gulha       55          Problems

Chèn giá trị mà không đề cập đến danh sách cột

INSERT INTO prod_mast VALUES(3,'Pakora', 48, 'OK');

Ví dụ trên cho thấy không có danh sách cột nào được chỉ định sau tên bảng. Trong trường hợp như vậy, các giá trị cho tất cả các cột phải cung cấp

Đây là hàng đã chèn

________số 8_______

Chèn giá trị cho các cột cụ thể

Ở đây trong ví dụ dưới đây, hai cột đã được chỉ định

INSERT INTO prod_mast(prod_id, prod_name)
VALUES(4, 'Pizza');

Đây là kết quả sau khi chèn

sqlite> SELECT * FROM prod_mast;
prod_id               prod_name   prod_rate   prod_qc
--------------------  ----------  ----------  ----------
1                     Pancakes    75          OK
2                     Gulha       55          Problems
3                     Pakora      48          OK
4                     Pizza                   OK

Từ kết quả trên, có vẻ như giá trị cho hai cột được đề cập đã được chèn và giá trị cho cột prod_qc cũng đã được chèn vì đối với cột đó, giá trị mặc định được gán là 'OK' tại thời điểm tạo bảng, nhưng

Bây giờ sử dụng lệnh sau

CREATE TABLE hrdb.prod_mast(
prod_id integer PRIMARY KEY,
prod_name text(20),
prod_rate integer,
prod_qc text(10) DEFAULT 'OK');
	
0

Các. lệnh nullvalue yêu cầu SQLite hiển thị các giá trị NULL dưới dạng NULL. SQLite hiển thị các chuỗi trống cho các giá trị NULL theo mặc định. Bây giờ hãy xem kết quả. Cột prod_rate trống được điền bởi NULL

CREATE TABLE hrdb.prod_mast(
prod_id integer PRIMARY KEY,
prod_name text(20),
prod_rate integer,
prod_qc text(10) DEFAULT 'OK');
	
1

Chèn cột khóa chính trùng lặp

Nếu chúng ta muốn chèn một hàng như vậy đã tồn tại giá trị của cột khóa chính thì xem kết quả

CREATE TABLE hrdb.prod_mast(
prod_id integer PRIMARY KEY,
prod_name text(20),
prod_rate integer,
prod_qc text(10) DEFAULT 'OK');
	
2

CẬP NHẬT hàng sử dụng INSERT

Nếu chúng ta muốn sửa đổi hàng cho prod_id là 4, chúng ta có thể sử dụng câu lệnh sau

CREATE TABLE hrdb.prod_mast(
prod_id integer PRIMARY KEY,
prod_name text(20),
prod_rate integer,
prod_qc text(10) DEFAULT 'OK');
	
3

Đây là kết quả sau khi chèn

CREATE TABLE hrdb.prod_mast(
prod_id integer PRIMARY KEY,
prod_name text(20),
prod_rate integer,
prod_qc text(10) DEFAULT 'OK');
	
4

Kết quả trên cho thấy, mặc dù prod_id 4 đã tồn tại nhưng nó đã bị sửa đổi bởi câu lệnh INSERT, bởi vì câu lệnh INSERT OR REPLACE đã được sử dụng

Làm cách nào để chèn vào sqlite3 Python?

Chèn dữ liệu bằng python .
Nhập gói sqlite3
Tạo một đối tượng kết nối bằng phương thức connect() bằng cách chuyển tên của cơ sở dữ liệu làm tham số cho nó
Phương thức con trỏ () trả về một đối tượng con trỏ mà bạn có thể giao tiếp với SQLite3 bằng cách sử dụng

Làm cách nào để chèn dữ liệu vào sqlite3?

SQLite INSERT – chèn một hàng vào bảng .
Đầu tiên, chỉ định tên của bảng mà bạn muốn chèn dữ liệu sau từ khóa INSERT INTO
Thứ hai, thêm danh sách các cột được phân tách bằng dấu phẩy sau tên bảng. Danh sách cột là tùy chọn. .
Thứ ba, thêm danh sách các giá trị được phân tách bằng dấu phẩy sau từ khóa GIÁ TRỊ

Làm cách nào để chèn đầu vào của người dùng vào cơ sở dữ liệu trong Python sqlite3?

kết nối ( 'cơ sở dữ liệu của tôi. db' ) con trỏ = conn. con trỏ() #tạo bảng nhân viên bán hàng con trỏ. exec("TẠO BẢNG nhân viên bán hàng(salesman_id n(5), tên char(30), thành phố char(35), hoa hồng thập phân(7,2));") s_id = input('ID nhân viên bán hàng. ') s_name = input('Tên. ') s_city = input('Thành phố. ') s_commision = input('Hoa hồng. ') con trỏ

Làm cách nào để chèn danh sách trong SQLite Python?

Ví dụ về Python để chèn một hàng vào bảng SQLite .
Kết nối với SQLite từ Python. .
Xác định truy vấn Chèn SQL. .
Nhận đối tượng con trỏ từ kết nối. .
Thực hiện truy vấn chèn bằng phương thức exec(). .
Cam kết thay đổi của bạn. .
Nhận số hàng bị ảnh hưởng. .
Xác minh kết quả bằng truy vấn SQL SELECT