use*_*756 13 python database flask
我正在运行一个程序来自另一个不便的人请求帮助.该计划是一个网站.服务器端由python和flask(模块,http://flask.pocoo.org/)编写.该程序已在服务器上成功运行.我需要做的是修改它上面的东西.由于生产服务器不允许进行测试,因此我通过flask在本地开发服务器中对其进行了测试.但是,我甚至无法运行原始程序.下面是python.
(venv)kevin@ubuntu:~/python/public_html$ python index.wsgi
Run Code Online (Sandbox Code Playgroud)
回溯(最近一次调用最后一次):文件"index.wsgi",第6行,从app import app作为应用程序
File "/home/kevin/python/public_html/app.py", line 27, in <module>
app = create_app()
File "/home/kevin/python/public_html/app.py", line 12, in create_app
database.init_db()
File "/home/kevin/python/public_html/database.py", line 24, in init_db
Base.metadata.create_all(engine)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2793, in create_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1478, in _run_visitor
with self._optional_conn_ctx_manager(connection) as conn:
File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__
return self.gen.next()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1471, in _optional_conn_ctx_manager
with self.contextual_connect() as conn:
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1661, in contextual_connect
self.pool.connect(),
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 272, in connect
return _ConnectionFairy(self).checkout()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 425, in __init__
rec = self._connection_record = pool._do_get()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 857, in _do_get
return self._create_connection()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 225, in _create_connection
return _ConnectionRecord(self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 318, in __init__
self.connection = self.__connect()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 368, in __connect
connection = self.__pool._creator()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/strategies.py", line 80, in connect
return dialect.connect(*cargs, **cparams)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 283, in connect
return self.dbapi.connect(*cargs, **cparams)
sqlalchemy.exc.OperationalError: (OperationalError) unable to open database file None None
Run Code Online (Sandbox Code Playgroud)
在config.py文件中
LOGFILE ='/ tmp /ate.log'DEBUG = True TESTING = True THREADED = True DATABASE_URI ='sqlite:////tmp/ate.db'SECRET_KEY = os.urandom(24)
因此,我在我的用户下创建了一个名为"tmp"的文件夹和一个名为"ate.db"的空文件.然后,再次运行它.它说
IOError:[Errno 2]没有这样的文件或目录:'/ home/kevin/log/date.log'
然后,我创建了日志文件夹和日志文件.运行它,但没有发生过像
(venv)kevin @ ubuntu:〜/ python/public_html $ python index.wsgi(venv)kevin @ ubuntu:〜/ python/public_html $ python index.wsgi(venv)kevin @ ubuntu:〜/ python/public_html $
如果成功,该网站应该在http://127.0.0.1:5000/上.但是,它没有用.有谁知道为什么以及如何解决它?代码应该没问题,因为它现在可以在线获得.问题应该是当地问题.非常感谢你的帮助.
程序卡住的代码
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import scoped_session, sessionmaker
engine = None
db_session = None
Base = declarative_base()
def init_engine(uri, **kwards):
global engine
engine = create_engine(uri, **kwards)
return engine
def init_db():
global db_session
db_session = scoped_session(sessionmaker(bind=engine))
# import all modules here that might define models so that
# they will be registered properly on the metadata. Otherwise
# you will have to import them first before calling init_db()
import models
Base.metadata.create_all(engine)
Run Code Online (Sandbox Code Playgroud)
小智 18
更换:
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////dbdir/test.db'
Run Code Online (Sandbox Code Playgroud)
附:
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///dbdir/test.db'
Run Code Online (Sandbox Code Playgroud)
小智 11
终于弄明白了,请帮帮忙
import os
file_path = os.path.abspath(os.getcwd())+"\database.db"
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///'+file_path
db = SQLAlchemy(app)
Run Code Online (Sandbox Code Playgroud)
我有sqlite这个问题.尝试打开数据库文件的进程在创建临时/锁定文件时需要具有对目录的写访问权.
以下结构对我来说是允许www-data使用数据库的.
%> ls -l
drwxrwxr-x 2 fmlheureux www-data 4096 Feb 17 13:24 database-dir
%> ls -l database-dir/
-rw-rw-r-- 1 fmlheureux www-data 40960 Feb 17 13:28 database.sqlite
Run Code Online (Sandbox Code Playgroud)
小智 5
我的数据库URI在其间添加一个点后开始摇摆////.在Windows 7上工作.我在调用它之前创建了目录和db-file.
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///./dbdir/test.db'
Run Code Online (Sandbox Code Playgroud)
我想我见过这样的错误,其中 .db 文件或其父目录的文件权限错误。chown您可以通过适当使用或来确保尝试访问数据库的进程可以这样做 chmod。
这是专门关于 Django 的,但可能仍然相关:https ://serverfault.com/questions/57596/why-do-i-get-sqlite-error-unable-to-open-database-file
| 归档时间: |
|
| 查看次数: |
37562 次 |
| 最近记录: |