2011-09-04 29 views
18

Cố định dạng cơ sở dữ liệu bằng SQLAlchemy nhưng khi tôi chạy create_all trên siêu dữ liệu, tôi nhận được lỗi ở trên. Tôi đã tạo công cụ bằng cách sử dụng đường dẫn sau cho người dùng Tyre77:OperationalError: (OperationalError) không thể mở tệp cơ sở dữ liệu Không có Không

engine = create_engine('sqlite:////tyre77/OmniCloud/database.db') 

Tôi đã đi qua và có tệp 'database.db' trên đường dẫn đó, nhưng có lẽ tôi đã nhập sai?

+0

Từ câu hỏi của bạn, tôi không rõ ràng nếu bạn đang sử dụng các cửa sổ hoặc một unix như os. Nếu bạn đang sử dụng Linux, có vẻ như bạn có quá nhiều ký tự sau tệp: nếu bạn đang sử dụng các cửa sổ, bạn đã thử sử dụng một tệp trên đĩa cục bộ chưa? –

+0

@Carl xin lỗi tôi đang chạy OS X Lion và đó phải là một con đường địa phương – Chris

+0

Tôi nghĩ rằng bạn đã có quá nhiều dấu gạch chéo. Nên có ba. –

Trả lời

31

Bạn đề cập rằng đó là đường dẫn đến người dùng tyre77 trên OS X, vì vậy không nên là sqlite:////Users/tyre77/OmniCloud/database.db?

Ngoài ra, ba dấu gạch chéo cho đường dẫn tương đối, bốn dấu gạch ngang cho đường dẫn tuyệt đối.

1

Sau khi đọc tài liệu về url sqlite here, tôi đã quyết định bạn có đúng số dấu gạch chéo. Rõ ràng, nó sử dụng cùng một trình phân tích cú pháp để kéo ra đường dẫn như các công cụ kết nối từ xa, do đó, "tên máy chủ" sẽ đi giữa dấu gạch chéo thứ hai và thứ ba được để trống.

Nếu bạn muốn chỉ định đường dẫn tuyệt đối, bạn sẽ thực hiện đúng cách. Kiểm tra để chắc chắn rằng bạn đang cung cấp đường dẫn tuyệt đối. Ba dấu gạch chéo có thể chỉ định đường dẫn tương đối, nhưng bạn cần phải biết thư mục làm việc hiện tại của ứng dụng, điều này có thể bị hỏng khi bạn trì hoãn ứng dụng của mình.

+0

Trong ví dụ, chúng hiển thị đường dẫn sqlite: ///: memory: ... vì vậy không nên có dấu gạch chéo khác để bắt đầu thư mục gốc? – Chris

+0

Tôi tin rằng bộ nhớ là một trường hợp đặc biệt, vì vậy tôi sẽ không sử dụng nó làm ví dụ. –

1

Tôi gặp sự cố tương tự trong windows 8.1. Dựa trên tài liệu SQLAlchemy:

sqlite:////db_absolute_path 

sqlite:///db_relative_path 

(chú ý rằng dòng thứ hai ở trên chỉ có 3 dấu gạch chéo) Trong trường hợp của tôi cung cấp đường dẫn tương đối giúp.

Các vấn đề liên quan