2017-09-05 176 views
0

我有我的本地機器和我的Web服務在SQLite數據庫使用的SQLAlchemy這樣它在同一臺機器訪問運行:我們計劃舉辦一個單獨的網絡在線服務SQLite數據庫的遠程訪問

engine = create_engine('sqlite:///{}'.format('mydatabase.db'), echo=True) 

來自數據庫託管的機器。我們如何才能使這個'mydabata.db'可用於我們的Web服務的遠程Web服務?謝謝。

回答

1

從SQLite的when to use文檔:

情況下客戶端/服務器RDBMS可能更

  • 客戶/服務器應用

如果有發送許多客戶端程序SQL通過網絡連接到同一個數據庫,然後使用客戶端/服務器數據庫引擎而不是SQLite。 SQLite將通過網絡文件系統工作,但由於與大多數網絡文件系統相關的延遲,性能不會太好。另外,文件鎖定邏輯在很多網絡文件系統實現中(在Unix和Windows上)都有問題。如果文件鎖定無法正常工作,兩個或多個客戶端可能會嘗試同時修改同一數據庫的同一部分,從而導致損壞。因爲這個問題是由底層文件系統實現中的錯誤引起的,所以SQLite沒有辦法阻止它。

一個好的經驗法則是避免在直接訪問同一數據庫(不使用干預應用程序服務器)的情況下使用SQLite,並且同時通過網絡從多臺計算機訪問。

SQLite適用於嵌入式系統或至少在同一臺計算機上使用它。恕我直言,你將不得不遷移到更大的SQL解決方案之一,如PostgreSQL,MariaDBMySQL。如果您通過ORM(SQLAlchemy)生成了所有查詢,那麼遷移到另一個RDBMS將沒有問題。但即使編寫SQL查詢也不會有太多問題,因爲所有這些RDBMS都使用非常相似的方言(與微軟的T-SQL不同)。而且由於SQLite是lite它只支持其他RDBMS支持的一個子集,所以應該沒有問題。