使用 Flask 链接一个简单的 SQLite 数据库



我目前正在尝试使用python创建一个SQLite数据库。

这是我的代码

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////c/PStuff/friend.db'
db = SQLAlchemy(app)
class ExampleTable(db.Model):
id = db.Column(db.Integer,primary_key=True)

我已经在PStuff文件夹中创建了一个名为"朋友.db"的数据库。它目前为空。

在cmd中,我使用它来创建数据库:sqlite3 friend.db然后我用了一个python shell:from test3 import db

最后,当我使用:db.create_all()我收到此错误:

Traceback (most recent call last):
File "c:PStufflibsite-packagessqlalchemyenginebase.py", line 2285, in _wrap_pool_connect
return fn()
File "c:PStufflibsite-packagessqlalchemypoolbase.py", line 363, in connect
return _ConnectionFairy._checkout(self)
File "c:PStufflibsite-packagessqlalchemypoolbase.py", line 773, in _checkout
fairy = _ConnectionRecord.checkout(pool)
File "c:PStufflibsite-packagessqlalchemypoolbase.py", line 492, in checkout
rec = pool._do_get()
File "c:PStufflibsite-packagessqlalchemypoolimpl.py", line 238, in _do_get
return self._create_connection()
File "c:PStufflibsite-packagessqlalchemypoolbase.py", line 308, in _create_connection
return _ConnectionRecord(self)
File "c:PStufflibsite-packagessqlalchemypoolbase.py", line 437, in __init__
self.__connect(first_connect_check=True)
File "c:PStufflibsite-packagessqlalchemypoolbase.py", line 657, in __connect
pool.logger.debug("Error on connect(): %s", e)
File "c:PStufflibsite-packagessqlalchemyutillanghelpers.py", line 68, in __exit__
compat.raise_(
File "c:PStufflibsite-packagessqlalchemyutilcompat.py", line 178, in raise_
raise exception
File "c:PStufflibsite-packagessqlalchemypoolbase.py", line 652, in __connect
connection = pool._invoke_creator(self)
File "c:PStufflibsite-packagessqlalchemyenginestrategies.py", line 114, in connect
return dialect.connect(*cargs, **cparams)
File "c:PStufflibsite-packagessqlalchemyenginedefault.py", line 490, in connect
return self.dbapi.connect(*cargs, **cparams)
sqlite3.OperationalError: unable to open database file
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:PStufflibsite-packagesflask_sqlalchemy__init__.py", line 1033, in create_all
self._execute_for_all_tables(app, bind, 'create_all')
File "c:PStufflibsite-packagesflask_sqlalchemy__init__.py", line 1025, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), **extra)
File "c:PStufflibsite-packagessqlalchemysqlschema.py", line 4320, in create_all
bind._run_visitor(
File "c:PStufflibsite-packagessqlalchemyenginebase.py", line 2057, in _run_visitor
with self._optional_conn_ctx_manager(connection) as conn:
File "c:PStufflibcontextlib.py", line 113, in __enter__
return next(self.gen)
File "c:PStufflibsite-packagessqlalchemyenginebase.py", line 2049, in _optional_conn_ctx_manager
with self._contextual_connect() as conn:
File "c:PStufflibsite-packagessqlalchemyenginebase.py", line 2251, in _contextual_connect
self._wrap_pool_connect(self.pool.connect, None),
File "c:PStufflibsite-packagessqlalchemyenginebase.py", line 2288, in _wrap_pool_connect
Connection._handle_dbapi_exception_noconnection(
File "c:PStufflibsite-packagessqlalchemyenginebase.py", line 1554, in _handle_dbapi_exception_noconnection
util.raise_(
File "c:PStufflibsite-packagessqlalchemyutilcompat.py", line 178, in raise_
raise exception
File "c:PStufflibsite-packagessqlalchemyenginebase.py", line 2285, in _wrap_pool_connect
return fn()
File "c:PStufflibsite-packagessqlalchemypoolbase.py", line 363, in connect
return _ConnectionFairy._checkout(self)
File "c:PStufflibsite-packagessqlalchemypoolbase.py", line 773, in _checkout
fairy = _ConnectionRecord.checkout(pool)
File "c:PStufflibsite-packagessqlalchemypoolbase.py", line 492, in checkout
rec = pool._do_get()
File "c:PStufflibsite-packagessqlalchemypoolimpl.py", line 238, in _do_get
return self._create_connection()
File "c:PStufflibsite-packagessqlalchemypoolbase.py", line 308, in _create_connection
return _ConnectionRecord(self)
File "c:PStufflibsite-packagessqlalchemypoolbase.py", line 437, in __init__
self.__connect(first_connect_check=True)
File "c:PStufflibsite-packagessqlalchemypoolbase.py", line 657, in __connect
pool.logger.debug("Error on connect(): %s", e)
File "c:PStufflibsite-packagessqlalchemyutillanghelpers.py", line 68, in __exit__
compat.raise_(
File "c:PStufflibsite-packagessqlalchemyutilcompat.py", line 178, in raise_
raise exception
File "c:PStufflibsite-packagessqlalchemypoolbase.py", line 652, in __connect
connection = pool._invoke_creator(self)
File "c:PStufflibsite-packagessqlalchemyenginestrategies.py", line 114, in connect
return dialect.connect(*cargs, **cparams)
File "c:PStufflibsite-packagessqlalchemyenginedefault.py", line 490, in connect
return self.dbapi.connect(*cargs, **cparams)
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) unable to open database file
(Background on this error at: http://sqlalche.me/e/e3q8)

我对SQL很陌生,任何帮助将不胜感激。

尝试使用替换

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////c/PStuff/friend.db'

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///c/PStuff/friend.db'

基于 SQLALCHEMY 文档

sqlite:////db_absolute_path
sqlite:///db_relative_path

对于Windows,请尝试此操作(如果您将数据库放在相同的目录中(

file_path = os.path.abspath(os.getcwd())+"\friend.db"
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///'+file_path

最新更新