2 Câu hỏi: chèn dữ liệu vào bảng bằng pyodbc

câu hỏi được tạo ra tại Wed, May 8, 2019 12:00 AM

tôi đang cố gắng chèn dữ liệu bằng python (pyodbc) vào cơ sở dữ liệu của mình nhưng tôi cứ bị lỗi như thiếu dấu phẩy và những người khác

tôi đã cố sử dụng biến "linea" thay vì tất cả các giá trị nhưng không hoạt động

for linea in nintendo:
        if(linea[0]!='id'):
            print(linea)
            cursor.execute("INSERT INTO Nintendo (juegoid,nombrejuego,generos,desarrolladores,publicadoras,fechapublicacion,exclusividad,ventasglobales,rating) VALUES (linea[0],linea[1],linea[2],linea[3],linea[4],linea[5],linea[6],linea[7],linea[8]);")
            print("data loaded")

cái này chứa "linea":

['1', '#B [orcistcist Battle', 'Party', 'Lucid Sheep Games', 'Lucid Sheep Games', 'ngày 12 tháng 4 năm 2018', 'Không', '', '']

    
- 1
2 Câu trả lời                              2                         

Bạn đã bỏ lỡ Từ khóa giá trị

INSERT INTO Nintendo **Values** (juegoid,nombrejuego,generos,desarrolladores,publicadoras,fechapublicacion,exclusividad,ventasglobales,rating) VALUES (linea[0],linea[1],linea[2],linea[3],linea[4],linea[5],linea[6],linea[7],linea[8]);

Ngoài ra, bạn phải cam kết dữ liệu bằng cách sử dụng con trỏ.commit

    
0
2019-05-08 16: 04: 33Z
  1. Giá trị nằm trong câu lệnh SQL gốc của OP.
    2019-05-08 16: 07: 24Z
  2. lời xin lỗi .. không thấy đầy đủ.
    2019-05-08 16: 09: 21Z

Nói chung trong Python, bạn không thể nội suy các biến như giá trị danh sách trực tiếp bên trong một chuỗi. Bạn phải sử dụng một số loại phương thức định dạng chuỗi bao gồm toán tử modulo % (sử dụng không dùng nữa), str.format() hoặc thậm chí F-string mới hơn trong 3.6 +.

Cụ thể trong DB-API, bạn nên tham số hóa các truy vấn trong đó các biến được liên kết với trình giữ chỗ trong cuộc gọi cursor.execute:

# PREPARED STATEMENT (NO DATA)
sql = """INSERT INTO Nintendo (juegoid, nombrejuego, generos, desarrolladores, publicadoras,
                              fechapublicacion, exclusividad, ventasglobales, rating)
         VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"""

# BIND PARAMS
cursor.execute(sql, params=linea[0:8])
conn.commit()

print("data loaded")
    
0
2019-05-08 16: 05: 27Z
  1. Tôi đã thử phương thức str.format string = "INSERT INTO Nintendo (juegoid,nombrejuego,generos,desarrolladores,publicadoras,fechapublicacion,exclusividad,ventasglobales,rating) VALUES ({},{},{},{},{},{},{},{},{});" sql=string.format(linea[0],linea[1],linea[2],linea[3],linea[4],linea[5],linea[6],linea[7],linea[8]) cursor.execute(sql) bây giờ tôi đang gặp lỗi ORA-00911
    2019-05-10 01: 03: 41Z
  2. Tại sao bạn không tham số hóa? Tránh nội suy chuỗi trong SQL. Nỗ lực hiện tại của bạn không bao gồm các trích dẫn cho các cột chuỗi có thể tránh được với các tham số. Xin tư vấn tại sao giải pháp của tôi không hiệu quả. Đăng đầy đủ lỗi.
    2019-05-10 13: 04: 06Z
nguồn đặt đây