Bạn chỉ có thể sử dụng execute
:
with self.connection as cursor:
cursor.execute(open("schema.sql", "r").read())
mặc dù bạn có thể muốn đặt psycopg2 thành autocommit
chế độ đầu tiên
để bạn có thể sử dụng quản lý giao dịch của chính tập lệnh.
Sẽ thật tuyệt nếu psycopg2 cung cấp một chế độ thông minh hơn, nơi nó đọc tệp trong một câu lệnh tại một thời điểm và gửi nó đến DB, nhưng hiện tại thì không có chế độ nào như tôi biết. Nó sẽ cần một trình phân tích cú pháp khá vững chắc để thực hiện chính xác khi đối mặt với $$
trích dẫn (và $delimiter$
của nó biến thể trong đó dấu phân cách có thể là bất kỳ số nhận dạng nào), standard_conforming_strings
, E''
chuỗi, phần thân hàm lồng nhau, v.v.
Lưu ý rằng điều này sẽ không làm việc với:
- bất kỳ thứ gì có chứa
psql
lệnh gạch chéo ngược - SAO CHÉP .. TỪ STDIN
- rất đầu vào dài
... và do đó sẽ không hoạt động với kết xuất từ pg_dump