Cân nhắc xây dựng truy vấn động để đảm bảo số lượng chỗ dành sẵn phù hợp với bảng và định dạng tệp CSV của bạn. Sau đó, vấn đề chỉ là đảm bảo bảng và tệp CSV của bạn là chính xác, thay vì kiểm tra xem bạn đã nhập đủ ?
trình giữ chỗ trong mã của bạn.
Ví dụ sau giả sử
- Tệp CSV chứa tên cột ở dòng đầu tiên
- Kết nối đã được xây dựng
- Tên tệp là
test.csv
- Tên bảng là
MyTable
- Python 3
...
with open ('test.csv', 'r') as f:
reader = csv.reader(f)
columns = next(reader)
query = 'insert into MyTable({0}) values ({1})'
query = query.format(','.join(columns), ','.join('?' * len(columns)))
cursor = connection.cursor()
for data in reader:
cursor.execute(query, data)
cursor.commit()
Nếu tên cột không được bao gồm trong tệp:
...
with open ('test.csv', 'r') as f:
reader = csv.reader(f)
data = next(reader)
query = 'insert into MyTable values ({0})'
query = query.format(','.join('?' * len(data)))
cursor = connection.cursor()
cursor.execute(query, data)
for data in reader:
cursor.execute(query, data)
cursor.commit()