Mam uruchomiony program od innej osoby, której niedogodności wymagają pomocy. Program jest stroną internetową. Koniec serwera jest napisany przez pythona i kolbę (moduł, http://flask.pocoo.org/). Program został pomyślnie uruchomiony na serwerze. Muszę coś zmodyfikować. Ponieważ serwer produkcyjny nie jest dopuszczony do testu, przetestowałem go w lokalnym serwerze programistycznym za pomocą skrzynki. Nie mogłem jednak uruchomić nawet oryginalnego programu. Poniżej jest z Pythona.sqlalchemy.exc.OperationalError: (OperationalError) nie można otworzyć pliku bazy danych Brak Brak
(venv)[email protected]:~/python/public_html$ python index.wsgi
Traceback (most recent call last): File "index.wsgi", line 6, in from app import app as application
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
W pliku config.py
LOGFILE = '/tmp/ate.log' DEBUG = True TESTING = True THREADED = True DATABASE_URI = 'sqlite:////tmp/ate.db' SECRET_KEY = os.urandom(24)
Dlatego stworzyłem folder o nazwie "tmp" pod moim użytkownikiem i pusty plik o nazwie "ate.db". Następnie uruchom go ponownie. To powiedział:
Następnie utworzyłem folder dziennika i plik dziennika. Uruchom go, ale nic się nie stało jak
(venv)[email protected]:~/python/public_html$ python index.wsgi (venv)[email protected]:~/python/public_html$ python index.wsgi (venv)[email protected]:~/python/public_html$
Jeśli to się powiedzie, strona powinna być dostępna na http://127.0.0.1:5000
/. Jednak to nie zadziałało. Czy ktoś wie, dlaczego i jak go rozwiązać? Kody powinny być dobre, ponieważ są teraz dostępne online. Problem powinien być lokalnym problemem. Dziękuję bardzo za Twoją pomoc.
Kodeks gdzie program jest zatrzymany
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)
jest tam miało być 4 '' po '//// sqlite: 'lub tylko 3? Również '/ tmp/ate.db' oznacza, że jest on przechowywany w'/tmp', a nie 'tmp'. Chyba że jesteś chroot. –
To znaczy 4. Myślę, że jest to problem mojego lokalnego środowiska, ponieważ może być uruchomiony na innym komputerze i serwerze. Jednak nie wiem, czego brakuje mi w moim laptopie. – user2677756
Być może warto podać kod w pobliżu miejsca, w którym ślad stosu wskazuje na –