Tôi đã tạo cơ sở dữ liệu bằng cách sử dụng SQLite3. và phiên bản python của tôi là 2.7.5.Loại nối tiếp SQLite3 không được tăng lên
Trước khi tạo cơ sở dữ liệu tôi chỉ cần tạo cơ sở dữ liệu ví dụ và kiểm tra xem liệu nó có hoạt động tốt hay không. và không thành công khi số id
không được tăng lên ngay cả khi tôi tuyên bố đó là loại serial
.
Tôi tạo ra cơ sở dữ liệu đơn giản:
import sqlite3
con = sqlite3.connect('sample.db')
cur = con.cursor()
cur.execute("""CREATE TABLE sample(id serial,test real)""")
cur.execute("""INSERT INTO sample(test) VALUES(?)""",(3,))
cur.execute("""INSERT INTO sample(test) VALUES(?)""",(6,))
cur.execute("""INSERT INTO sample(test) VALUES(?)""",(8,))
con.commit()
Sau đó, tôi lấy tất cả dữ liệu:
data = cur.execute("""SELECT * from sample""")
t = data.fetchall()
In [33]: t
Out[33]: [(None, 3.0), (None, 6.0), (None, 8.0)]
tôi mong đợi này: Out[33]: [(1, 3.0), (2, 6.0), (3, 8.0)]
Tuy nhiên, Như bạn có thể thấy, tất cả các yếu tố id
là None
Làm cách nào để giải quyết vấn đề này? Tôi biết tôi có thể làm bằng cách tăng thêm một biến và Chèn nó. như sau:
id += 1
cur.execute("""CREATE TABLE sample(id serial,test real)""")
id += 1
cur.execute("""INSERT INTO sample(test) VALUES(?)""",(3,))
id += 1
cur.execute("""INSERT INTO sample(test) VALUES(?)""",(6,))
Tuy nhiên, không phải là khủng khiếp sao? Tôi không muốn làm điều đó. Tôi muốn làm cho mã của tôi rõ ràng và thông minh.
Bạn lấy loại 'nối tiếp' * ở đâu? Không có từ khóa như vậy trong SQLite. –
Thật sao? Tôi tìm thấy nó trên internet cũng trong SÁCH! hmmm, sau đó có bất kỳ thay thế nào làm những gì tôi muốn? – SamuraiT