2011-09-24 22 views
8

Tôi đang cố chèn một chuỗi các chuỗi vào mysql bằng python và mysql.connector. Mã hiện tại của tôi trông giống như sau:Chuỗi thoát với python mysql.connector

db = mysql.connector.Connect('config blah blah') 
cursor = db.cursor() 
data = (somestring1, somestring2) 
sql = "INSERT INTO mytable (col1, col2) VALUES ('%s', '%s')" 
cursor.execute(sql, data) 

Làm cách nào để thoát chuỗi? Tôi có thể thử làm điều đó trong python nhưng tôi biết đây không phải là cách đúng cách.

Lưu ý: Tôi nhận thấy mysql.connector vẫn đang được phát triển.

update:

Dòng 4 nên đọc:

sql = "INSERT INTO mytable (col1, col2) VALUES (%s, %s)" 

Trả lời

7

Kể từ mysql.connector là DB API v2.0 phù hợp, bạn không cần phải thoát khỏi dữ liệu cho mình, nó có phải nó tự động cho bạn.

+0

Cảm ơn. Tôi thực sự đã nhập đúng mã mẫu của mình. Tôi đã chỉnh sửa nó để hiển thị vấn đề của tôi. –

+0

Và nếu bạn phải tạo ra câu lệnh chèn có chứa 1000 (10.000, 1.000.000) giá trị, bạn phải hardcode nó với '% s'? Điều gì sẽ xảy ra nếu bạn không biết bạn phải chèn bao nhiêu giá trị, ví dụ, nếu bạn đọc nó từ nguồn bên ngoài (tệp, yêu cầu HTTP), cách sử dụng "thoát tự động"? – Vitaliy

6

Câu trả lời từ infrared là cách tiếp cận tốt nhất.

Nhưng, nếu bạn thực sự cần phải thoát khỏi một số chuỗi tùy ý, bạn có thể làm điều này:

db = mysql.connector.connect(......) 

new_str = db.converter.escape('string to be escaped')