簡體   English   中英

Python 3.6.3 無法導入 _sqlite3 以使用 sqlalchemy 運行 SQLite 數據庫

[英]Python 3.6.3 unable to import _sqlite3 to run a SQlite db with sqlalchemy

我正在使用 pipenv 運行我的 Fast API 項目,並使用 Python 3.6.3 作為解釋器。 對於生產,我使用了一個工作正常的 postgres db。 現在我想用 pytest 和 sqlite 測試我的 api。

因此我更改了數據庫連接設置:

engine = create_engine("sqlite:///./test.db")
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

Base = declarative_base()
db = SessionLocal()

我還嘗試了 sqlalchemy 官方文檔中的連接字符串:

engine = create_engine('sqlite://')

當我運行測試時,出現以下錯誤:

   engine = create_engine("sqlite:///./test.db")
../../../../.local/share/virtualenvs/test-hhG2yARU/lib/python3.6/site-packages/sqlalchemy/util/deprecations.py:298: in warned
    return fn(*args, **kwargs)
../../../../.local/share/virtualenvs/test-hhG2yARU/lib/python3.6/site-packages/sqlalchemy/engine/create.py:560: in create_engine
    dbapi = dialect_cls.dbapi(**dbapi_args)
../../../../.local/share/virtualenvs/test-hhG2yARU/lib/python3.6/site-packages/sqlalchemy/dialects/sqlite/pysqlite.py:473: in dbapi
    from sqlite3 import dbapi2 as sqlite
../../../../.pyenv/versions/3.6.3/lib/python3.6/sqlite3/__init__.py:23: in <module>
    from sqlite3.dbapi2 import *
../../../../.pyenv/versions/3.6.3/lib/python3.6/sqlite3/dbapi2.py:27: in <module>
    from _sqlite3 import *
E   ModuleNotFoundError: No module named '_sqlite3'

我在源代碼中看到導致錯誤的模塊有以下注釋:

 pysqlite2/dbapi2.py: the DB-API 2.0 interface
#
# Copyright (C) 2004-2005 Gerhard Häring <gh@ghaering.de>
#
# This file is part of pysqlite.

這里的錯誤是由

from _sqlite3 import *

其中 _sqlite 未找到。 我看了看

來自 pysqlite3 的 dbapi2.py 文件。 這里的 sqlite 是在沒有“_”的情況下導入的。 所以我認為從 python3 開始,pysqlite3 文件應該內置在 python 中。

有沒有辦法將pysqlite2更改為3? 我讀過關於安裝 pysqlite3 的文章,但這對我來說沒有任何改變。

我還嘗試從 python 3.6.13 更新到 3.6.3,因為 3.6 是強制性的。 這也沒有改變行為。

我能夠通過@MatsLindh 提供的信息解決它這是解決方案的原始評論 我已經安裝

sudo apt-get install libsqlite3-dev

然后用 pyenv 重新安裝了我的 python 版本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM