Tôi có tệp .sql chứa một loạt các truy vấn SQL, với mỗi truy vấn trải rộng trên nhiều dòng. Tôi muốn thực hiện các truy vấn này trong MySQL thông qua Python bằng cách sử dụng MySQLdb
.Thực thi tệp .sql bằng Python với MySQLdb
sqlite3
has "a nonstandard shortcut" for this purpose called executescript()
, nhưng dường như không có bất kỳ chức năng tương đương nào trong MySQLdb
.
Tôi nhận thấy this old question from 2 years ago yêu cầu cùng một điều, nhưng tôi thấy câu trả lời không thỏa mãn. Câu trả lời về cơ bản là:
Sử dụng
subprocess
để chạy lệnhmysql
và gửi tệp .sql của bạn.
này hoạt động, nhưng nó là khá thanh nha, và nó giới thiệu sự phức tạp không cần thiết với xử lý lỗi và như vậy.
Nếu mỗi truy vấn nằm trên một dòng, chỉ cần thực hiện từng dòng riêng biệt.
Nhưng trong trường hợp của tôi, chúng trải rộng trên nhiều dòng, vì vậy điều này sẽ không hoạt động.
Nếu mỗi truy vấn không nằm trên một dòng, bằng cách nào đó hãy kết nối chúng.
Nhưng, bằng cách nào? Ý tôi là, tôi có thể hack một thứ dễ dàng, vì vậy bạn không cần phải trả lời với câu trả lời nửa nướng ở đây, và có lẽ đó là những gì tôi sẽ làm, nhưng đã có một thư viện được thiết lập để thực hiện điều này chưa? Tôi cảm thấy thoải mái hơn với giải pháp toàn diện và chính xác hơn là hack.
tôi đã đệ trình một câu trả lời rằng invovled phân tích cú pháp tập tin và xây dựng các truy vấn nhưng tôi nghĩ đó là những gì bạn có nghĩa là "hack" vì vậy tôi đã xóa nó. – acattle