部署flask项目到heroku上时,出现psycopg2.errors.UndefinedTable: relation "question" does not exist问题,该怎么解决?

当我把flask项目部署到heroku上后,打开app时显示**Internal Server Error**. 报错为

psycopg2.errors.UndefinedTable: relation "question" does not exist

我google下,可能是由于migrations文件导致的,于是我就把该文件删掉了。但依然出现同样的问题。

求大神帮忙,现在踩在坑里有点出不去了。

这是我的config.py文件:

import os

DEBUG = True

SECRET_KEY = os.urandom(24)

MAX_CONTENT_LENGTH = 1 * 1024 * 1024

SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL')

SQLALCHEMY_TRACK_MODIFICATIONS=False

下面是heroku 的logs:

2019-11-17T08:43:29.637889+00:00 app[web.1]: [2019-11-17 08:43:29 +0000] [11] [ERROR] Error handling request /
2019-11-17T08:43:29.637935+00:00 app[web.1]: Traceback (most recent call last):
2019-11-17T08:43:29.637940+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1249, in _execute_context
2019-11-17T08:43:29.637942+00:00 app[web.1]: cursor, statement, parameters, context
2019-11-17T08:43:29.637945+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/default.py", line 580, in do_execute
2019-11-17T08:43:29.637947+00:00 app[web.1]: cursor.execute(statement, parameters)
2019-11-17T08:43:29.637949+00:00 app[web.1]: psycopg2.errors.UndefinedTable: relation "question" does not exist
2019-11-17T08:43:29.637952+00:00 app[web.1]: LINE 2: FROM question ORDER BY question.create_time DESC
2019-11-17T08:43:29.637955+00:00 app[web.1]: ^
2019-11-17T08:43:29.637956+00:00 app[web.1]:
2019-11-17T08:43:29.637958+00:00 app[web.1]:
2019-11-17T08:43:29.637960+00:00 app[web.1]: The above exception was the direct cause of the following exception:
2019-11-17T08:43:29.637962+00:00 app[web.1]:
2019-11-17T08:43:29.637964+00:00 app[web.1]: Traceback (most recent call last):
2019-11-17T08:43:29.637966+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/workers/sync.py", line 134, in handle
2019-11-17T08:43:29.637968+00:00 app[web.1]: self.handle_request(listener, req, client, addr)
2019-11-17T08:43:29.637970+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/workers/sync.py", line 175, in handle_request
2019-11-17T08:43:29.637972+00:00 app[web.1]: respiter = self.wsgi(environ, resp.start_response)
2019-11-17T08:43:29.637984+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 2463, in __call__
2019-11-17T08:43:29.637986+00:00 app[web.1]: return self.wsgi_app(environ, start_response)
2019-11-17T08:43:29.637988+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 2449, in wsgi_app
2019-11-17T08:43:29.637990+00:00 app[web.1]: response = self.handle_exception(e)
2019-11-17T08:43:29.637992+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 1866, in handle_exception
2019-11-17T08:43:29.637993+00:00 app[web.1]: reraise(exc_type, exc_value, tb)
2019-11-17T08:43:29.637995+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
2019-11-17T08:43:29.637997+00:00 app[web.1]: raise value
2019-11-17T08:43:29.637999+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 2446, in wsgi_app
2019-11-17T08:43:29.638000+00:00 app[web.1]: response = self.full_dispatch_request()
2019-11-17T08:43:29.638002+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 1951, in full_dispatch_request
2019-11-17T08:43:29.638004+00:00 app[web.1]: rv = self.handle_user_exception(e)
2019-11-17T08:43:29.638006+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 1820, in handle_user_exception
2019-11-17T08:43:29.638008+00:00 app[web.1]: reraise(exc_type, exc_value, tb)
2019-11-17T08:43:29.638010+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
2019-11-17T08:43:29.638011+00:00 app[web.1]: raise value
2019-11-17T08:43:29.638013+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 1949, in full_dispatch_request
2019-11-17T08:43:29.638015+00:00 app[web.1]: rv = self.dispatch_request()
2019-11-17T08:43:29.638017+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 1935, in dispatch_request
2019-11-17T08:43:29.638019+00:00 app[web.1]: return self.view_functions[rule.endpoint](**req.view_args)
2019-11-17T08:43:29.638021+00:00 app[web.1]: File "/app/project.py", line 27, in index
2019-11-17T08:43:29.638023+00:00 app[web.1]: 'questions': Questions.query.order_by(desc('create_time')).all()
2019-11-17T08:43:29.638025+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/orm/query.py", line 3186, in all
2019-11-17T08:43:29.638027+00:00 app[web.1]: return list(self)
2019-11-17T08:43:29.638029+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/orm/query.py", line 3342, in __iter__
2019-11-17T08:43:29.638031+00:00 app[web.1]: return self._execute_and_instances(context)
2019-11-17T08:43:29.638033+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/orm/query.py", line 3367, in _execute_and_instances
2019-11-17T08:43:29.638035+00:00 app[web.1]: result = conn.execute(querycontext.statement, self._params)
2019-11-17T08:43:29.638037+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 988, in execute
2019-11-17T08:43:29.638039+00:00 app[web.1]: return meth(self, multiparams, params)
2019-11-17T08:43:29.638041+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/sql/elements.py", line 287, in _execute_on_connection
2019-11-17T08:43:29.638043+00:00 app[web.1]: return connection._execute_clauseelement(self, multiparams, params)
2019-11-17T08:43:29.638045+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1107, in _execute_clauseelement
2019-11-17T08:43:29.638047+00:00 app[web.1]: distilled_params,
2019-11-17T08:43:29.638049+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1253, in _execute_context
2019-11-17T08:43:29.638051+00:00 app[web.1]: e, statement, parameters, cursor, context
2019-11-17T08:43:29.638053+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1473, in _handle_dbapi_exception
2019-11-17T08:43:29.638055+00:00 app[web.1]: util.raise_from_cause(sqlalchemy_exception, exc_info)
2019-11-17T08:43:29.638057+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 398, in raise_from_cause
2019-11-17T08:43:29.638059+00:00 app[web.1]: reraise(type(exception), exception, tb=exc_tb, cause=cause)
2019-11-17T08:43:29.638061+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 152, in reraise
2019-11-17T08:43:29.638063+00:00 app[web.1]: raise value.with_traceback(tb)
2019-11-17T08:43:29.638076+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1249, in _execute_context
2019-11-17T08:43:29.638079+00:00 app[web.1]: cursor, statement, parameters, context
2019-11-17T08:43:29.638081+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/default.py", line 580, in do_execute
2019-11-17T08:43:29.638083+00:00 app[web.1]: cursor.execute(statement, parameters)
2019-11-17T08:43:29.638085+00:00 app[web.1]: sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "question" does not exist
2019-11-17T08:43:29.638087+00:00 app[web.1]: LINE 2: FROM question ORDER BY question.create_time DESC
2019-11-17T08:43:29.638089+00:00 app[web.1]: ^
2019-11-17T08:43:29.638091+00:00 app[web.1]:
2019-11-17T08:43:29.638095+00:00 app[web.1]: [SQL: SELECT question.id AS question_id, question.title AS question_title, question.content AS question_content, question.create_time AS question_create_time, question.author_id AS question_author_id
2019-11-17T08:43:29.638097+00:00 app[web.1]: FROM question ORDER BY question.create_time DESC]
2019-11-17T08:43:29.638099+00:00 app[web.1]: (Background on this error at: http://sqlalche.me/e/f405)
2019-11-17T08:43:29.638285+00:00 app[web.1]: 10.61.164.89 - - [17/Nov/2019:08:43:29 +0000] "GET / HTTP/1.1" 500 0 "-" "-"
2019-11-17T08:44:42.918911+00:00 app[web.1]: [2019-11-17 08:44:42 +0000] [11] [ERROR] Error handling request /
2019-11-17T08:44:42.918940+00:00 app[web.1]: Traceback (most recent call last):
2019-11-17T08:44:42.918944+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1249, in _execute_context
2019-11-17T08:44:42.918946+00:00 app[web.1]: cursor, statement, parameters, context
2019-11-17T08:44:42.918948+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/default.py", line 580, in do_execute
2019-11-17T08:44:42.918950+00:00 app[web.1]: cursor.execute(statement, parameters)
2019-11-17T08:44:42.918952+00:00 app[web.1]: psycopg2.errors.UndefinedTable: relation "question" does not exist
2019-11-17T08:44:42.918955+00:00 app[web.1]: LINE 2: FROM question ORDER BY question.create_time DESC
2019-11-17T08:44:42.918957+00:00 app[web.1]: ^
2019-11-17T08:44:42.918959+00:00 app[web.1]:
2019-11-17T08:44:42.918961+00:00 app[web.1]:
2019-11-17T08:44:42.918963+00:00 app[web.1]: The above exception was the direct cause of the following exception:
2019-11-17T08:44:42.918965+00:00 app[web.1]:
2019-11-17T08:44:42.918967+00:00 app[web.1]: Traceback (most recent call last):
2019-11-17T08:44:42.918969+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/workers/sync.py", line 134, in handle
2019-11-17T08:44:42.918971+00:00 app[web.1]: self.handle_request(listener, req, client, addr)
2019-11-17T08:44:42.918973+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/workers/sync.py", line 175, in handle_request
2019-11-17T08:44:42.918975+00:00 app[web.1]: respiter = self.wsgi(environ, resp.start_response)
2019-11-17T08:44:42.918977+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 2463, in __call__
2019-11-17T08:44:42.918979+00:00 app[web.1]: return self.wsgi_app(environ, start_response)
2019-11-17T08:44:42.918981+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 2449, in wsgi_app
2019-11-17T08:44:42.918983+00:00 app[web.1]: response = self.handle_exception(e)
2019-11-17T08:44:42.918985+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 1866, in handle_exception
2019-11-17T08:44:42.918988+00:00 app[web.1]: reraise(exc_type, exc_value, tb)
2019-11-17T08:44:42.918989+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
2019-11-17T08:44:42.918991+00:00 app[web.1]: raise value
2019-11-17T08:44:42.918994+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 2446, in wsgi_app
2019-11-17T08:44:42.918996+00:00 app[web.1]: response = self.full_dispatch_request()
2019-11-17T08:44:42.918998+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 1951, in full_dispatch_request
2019-11-17T08:44:42.919000+00:00 app[web.1]: rv = self.handle_user_exception(e)
2019-11-17T08:44:42.919002+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 1820, in handle_user_exception
2019-11-17T08:44:42.919004+00:00 app[web.1]: reraise(exc_type, exc_value, tb)
2019-11-17T08:44:42.919006+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
2019-11-17T08:44:42.919008+00:00 app[web.1]: raise value
2019-11-17T08:44:42.919010+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 1949, in full_dispatch_request
2019-11-17T08:44:42.919012+00:00 app[web.1]: rv = self.dispatch_request()
2019-11-17T08:44:42.919014+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 1935, in dispatch_request
2019-11-17T08:44:42.919016+00:00 app[web.1]: return self.view_functions[rule.endpoint](**req.view_args)
2019-11-17T08:44:42.919018+00:00 app[web.1]: File "/app/project.py", line 27, in index
2019-11-17T08:44:42.919020+00:00 app[web.1]: 'questions': Questions.query.order_by(desc('create_time')).all()
2019-11-17T08:44:42.919022+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/orm/query.py", line 3186, in all
2019-11-17T08:44:42.919025+00:00 app[web.1]: return list(self)
2019-11-17T08:44:42.919027+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/orm/query.py", line 3342, in __iter__
2019-11-17T08:44:42.919028+00:00 app[web.1]: return self._execute_and_instances(context)
2019-11-17T08:44:42.919031+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/orm/query.py", line 3367, in _execute_and_instances
2019-11-17T08:44:42.919033+00:00 app[web.1]: result = conn.execute(querycontext.statement, self._params)
2019-11-17T08:44:42.919035+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 988, in execute
2019-11-17T08:44:42.919037+00:00 app[web.1]: return meth(self, multiparams, params)
2019-11-17T08:44:42.919039+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/sql/elements.py", line 287, in _execute_on_connection
2019-11-17T08:44:42.919041+00:00 app[web.1]: return connection._execute_clauseelement(self, multiparams, params)
2019-11-17T08:44:42.919043+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1107, in _execute_clauseelement
2019-11-17T08:44:42.919046+00:00 app[web.1]: distilled_params,
2019-11-17T08:44:42.919048+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1253, in _execute_context
2019-11-17T08:44:42.919050+00:00 app[web.1]: e, statement, parameters, cursor, context
2019-11-17T08:44:42.919052+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1473, in _handle_dbapi_exception
2019-11-17T08:44:42.919054+00:00 app[web.1]: util.raise_from_cause(sqlalchemy_exception, exc_info)
2019-11-17T08:44:42.919056+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 398, in raise_from_cause
2019-11-17T08:44:42.919058+00:00 app[web.1]: reraise(type(exception), exception, tb=exc_tb, cause=cause)
2019-11-17T08:44:42.919060+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 152, in reraise
2019-11-17T08:44:42.919063+00:00 app[web.1]: raise value.with_traceback(tb)
2019-11-17T08:44:42.919074+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1249, in _execute_context
2019-11-17T08:44:42.919077+00:00 app[web.1]: cursor, statement, parameters, context
2019-11-17T08:44:42.919079+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/default.py", line 580, in do_execute
2019-11-17T08:44:42.919081+00:00 app[web.1]: cursor.execute(statement, parameters)
2019-11-17T08:44:42.919083+00:00 app[web.1]: sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "question" does not exist
2019-11-17T08:44:42.919085+00:00 app[web.1]: LINE 2: FROM question ORDER BY question.create_time DESC
2019-11-17T08:44:42.919087+00:00 app[web.1]: ^
2019-11-17T08:44:42.919088+00:00 app[web.1]:
2019-11-17T08:44:42.919091+00:00 app[web.1]: [SQL: SELECT question.id AS question_id, question.title AS question_title, question.content AS question_content, question.create_time AS question_create_time, question.author_id AS question_author_id
2019-11-17T08:44:42.919094+00:00 app[web.1]: FROM question ORDER BY question.create_time DESC]
2019-11-17T08:44:42.919096+00:00 app[web.1]: (Background on this error at: http://sqlalche.me/e/f405)
2019-11-17T08:44:42.919234+00:00 app[web.1]: 10.5.225.117 - - [17/Nov/2019:08:44:42 +0000] "GET / HTTP/1.1" 500 0 "-" "-"
2019-11-17T08:44:42.918749+00:00 heroku[router]: at=info method=GET path="/" host=tianliang-flask-app.herokuapp.com request_id=c195162e-6529-4fb0-9aac-1d9dd9a450e8 fwd="58.182.174.147" dyno=web.1 connect=1ms service=7ms status=500 bytes=244 protocol=https
2019-11-17T09:02:25.748890+00:00 app[web.1]: [2019-11-17 09:02:25 +0000] [12] [ERROR] Error handling request /
2019-11-17T09:02:25.748917+00:00 app[web.1]: Traceback (most recent call last):
2019-11-17T09:02:25.748921+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1249, in _execute_context
2019-11-17T09:02:25.748923+00:00 app[web.1]: cursor, statement, parameters, context
2019-11-17T09:02:25.748932+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/default.py", line 580, in do_execute
2019-11-17T09:02:25.748934+00:00 app[web.1]: cursor.execute(statement, parameters)
2019-11-17T09:02:25.748936+00:00 app[web.1]: psycopg2.errors.UndefinedTable: relation "question" does not exist
2019-11-17T09:02:25.748939+00:00 app[web.1]: LINE 2: FROM question ORDER BY question.create_time DESC
2019-11-17T09:02:25.748943+00:00 app[web.1]: ^
2019-11-17T09:02:25.748944+00:00 app[web.1]:
2019-11-17T09:02:25.748947+00:00 app[web.1]:
2019-11-17T09:02:25.748949+00:00 app[web.1]: The above exception was the direct cause of the following exception:
2019-11-17T09:02:25.748950+00:00 app[web.1]:
2019-11-17T09:02:25.748952+00:00 app[web.1]: Traceback (most recent call last):
2019-11-17T09:02:25.748953+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/workers/sync.py", line 134, in handle
2019-11-17T09:02:25.748955+00:00 app[web.1]: self.handle_request(listener, req, client, addr)
2019-11-17T09:02:25.748956+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/workers/sync.py", line 175, in handle_request
2019-11-17T09:02:25.748958+00:00 app[web.1]: respiter = self.wsgi(environ, resp.start_response)
2019-11-17T09:02:25.748991+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 2463, in __call__
2019-11-17T09:02:25.748994+00:00 app[web.1]: return self.wsgi_app(environ, start_response)
2019-11-17T09:02:25.748996+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 2449, in wsgi_app
2019-11-17T09:02:25.748998+00:00 app[web.1]: response = self.handle_exception(e)
2019-11-17T09:02:25.749000+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 1866, in handle_exception
2019-11-17T09:02:25.749002+00:00 app[web.1]: reraise(exc_type, exc_value, tb)
2019-11-17T09:02:25.749004+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
2019-11-17T09:02:25.749006+00:00 app[web.1]: raise value
2019-11-17T09:02:25.749008+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 2446, in wsgi_app
2019-11-17T09:02:25.749010+00:00 app[web.1]: response = self.full_dispatch_request()
2019-11-17T09:02:25.749012+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 1951, in full_dispatch_request
2019-11-17T09:02:25.749014+00:00 app[web.1]: rv = self.handle_user_exception(e)
2019-11-17T09:02:25.749016+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 1820, in handle_user_exception
2019-11-17T09:02:25.749018+00:00 app[web.1]: reraise(exc_type, exc_value, tb)
2019-11-17T09:02:25.749020+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
2019-11-17T09:02:25.749023+00:00 app[web.1]: raise value
2019-11-17T09:02:25.749024+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 1949, in full_dispatch_request
2019-11-17T09:02:25.749026+00:00 app[web.1]: rv = self.dispatch_request()
2019-11-17T09:02:25.749027+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 1935, in dispatch_request
2019-11-17T09:02:25.749029+00:00 app[web.1]: return self.view_functions[rule.endpoint](**req.view_args)
2019-11-17T09:02:25.749030+00:00 app[web.1]: File "/app/project.py", line 27, in index
2019-11-17T09:02:25.749032+00:00 app[web.1]: 'questions': Questions.query.order_by(desc('create_time')).all()
2019-11-17T09:02:25.749033+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/orm/query.py", line 3186, in all
2019-11-17T09:02:25.749036+00:00 app[web.1]: return list(self)
2019-11-17T09:02:25.749038+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/orm/query.py", line 3342, in __iter__
2019-11-17T09:02:25.749039+00:00 app[web.1]: return self._execute_and_instances(context)
2019-11-17T09:02:25.749041+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/orm/query.py", line 3367, in _execute_and_instances
2019-11-17T09:02:25.749042+00:00 app[web.1]: result = conn.execute(querycontext.statement, self._params)
2019-11-17T09:02:25.749044+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 988, in execute
2019-11-17T09:02:25.749045+00:00 app[web.1]: return meth(self, multiparams, params)
2019-11-17T09:02:25.749047+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/sql/elements.py", line 287, in _execute_on_connection
2019-11-17T09:02:25.749048+00:00 app[web.1]: return connection._execute_clauseelement(self, multiparams, params)
2019-11-17T09:02:25.749050+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1107, in _execute_clauseelement
2019-11-17T09:02:25.749051+00:00 app[web.1]: distilled_params,
2019-11-17T09:02:25.749053+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1253, in _execute_context
2019-11-17T09:02:25.749054+00:00 app[web.1]: e, statement, parameters, cursor, context
2019-11-17T09:02:25.749056+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1473, in _handle_dbapi_exception
2019-11-17T09:02:25.749057+00:00 app[web.1]: util.raise_from_cause(sqlalchemy_exception, exc_info)
2019-11-17T09:02:25.749059+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 398, in raise_from_cause
2019-11-17T09:02:25.749060+00:00 app[web.1]: reraise(type(exception), exception, tb=exc_tb, cause=cause)
2019-11-17T09:02:25.749062+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 152, in reraise
2019-11-17T09:02:25.749063+00:00 app[web.1]: raise value.with_traceback(tb)
2019-11-17T09:02:25.749074+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1249, in _execute_context
2019-11-17T09:02:25.749076+00:00 app[web.1]: cursor, statement, parameters, context
2019-11-17T09:02:25.749078+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/default.py", line 580, in do_execute
2019-11-17T09:02:25.749080+00:00 app[web.1]: cursor.execute(statement, parameters)
2019-11-17T09:02:25.749082+00:00 app[web.1]: sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "question" does not exist
2019-11-17T09:02:25.749084+00:00 app[web.1]: LINE 2: FROM question ORDER BY question.create_time DESC
2019-11-17T09:02:25.749087+00:00 app[web.1]: ^
2019-11-17T09:02:25.749089+00:00 app[web.1]:
2019-11-17T09:02:25.749092+00:00 app[web.1]: [SQL: SELECT question.id AS question_id, question.title AS question_title, question.content AS question_content, question.create_time AS question_create_time, question.author_id AS question_author_id
2019-11-17T09:02:25.749094+00:00 app[web.1]: FROM question ORDER BY question.create_time DESC]
2019-11-17T09:02:25.749096+00:00 app[web.1]: (Background on this error at: http://sqlalche.me/e/f405)
2019-11-17T09:02:25.749271+00:00 app[web.1]: 10.69.244.94 - - [17/Nov/2019:09:02:25 +0000] "GET / HTTP/1.1" 500 0 "-" "-"
2019-11-17T09:02:25.755053+00:00 heroku[router]: at=info method=GET path="/" host=tianliang-flask-app.herokuapp.com request_id=181975e4-7c78-4f7f-b131-4b1ddb544e02 fwd="58.182.174.147" dyno=web.1 connect=0ms service=92ms status=500 bytes=244 protocol=https
2019-11-17T09:06:00.663577+00:00 heroku[router]: at=info method=GET path="/" host=tianliang-flask-app.herokuapp.com request_id=571550f7-554b-42d0-b127-0a4837f6aae9 fwd="58.182.174.147" dyno=web.1 connect=1ms service=17ms status=500 bytes=244 protocol=https
2019-11-17T09:06:00.661593+00:00 app[web.1]: [2019-11-17 09:06:00 +0000] [11] [ERROR] Error handling request /
2019-11-17T09:06:00.661619+00:00 app[web.1]: Traceback (most recent call last):
2019-11-17T09:06:00.662439+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1249, in _execute_context
2019-11-17T09:06:00.662443+00:00 app[web.1]: cursor, statement, parameters, context
2019-11-17T09:06:00.662447+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/default.py", line 580, in do_execute
2019-11-17T09:06:00.662449+00:00 app[web.1]: cursor.execute(statement, parameters)
2019-11-17T09:06:00.662452+00:00 app[web.1]: psycopg2.errors.UndefinedTable: relation "question" does not exist
2019-11-17T09:06:00.662455+00:00 app[web.1]: LINE 2: FROM question ORDER BY question.create_time DESC
2019-11-17T09:06:00.662457+00:00 app[web.1]: ^
2019-11-17T09:06:00.662459+00:00 app[web.1]:
2019-11-17T09:06:00.662461+00:00 app[web.1]:
2019-11-17T09:06:00.662464+00:00 app[web.1]: The above exception was the direct cause of the following exception:
2019-11-17T09:06:00.662466+00:00 app[web.1]:
2019-11-17T09:06:00.662471+00:00 app[web.1]: Traceback (most recent call last):
2019-11-17T09:06:00.662473+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/workers/sync.py", line 134, in handle
2019-11-17T09:06:00.662476+00:00 app[web.1]: self.handle_request(listener, req, client, addr)
2019-11-17T09:06:00.662478+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/workers/sync.py", line 175, in handle_request
2019-11-17T09:06:00.662480+00:00 app[web.1]: respiter = self.wsgi(environ, resp.start_response)
2019-11-17T09:06:00.662483+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 2463, in __call__
2019-11-17T09:06:00.662486+00:00 app[web.1]: return self.wsgi_app(environ, start_response)
2019-11-17T09:06:00.662488+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 2449, in wsgi_app
2019-11-17T09:06:00.662491+00:00 app[web.1]: response = self.handle_exception(e)
2019-11-17T09:06:00.662493+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 1866, in handle_exception
2019-11-17T09:06:00.662495+00:00 app[web.1]: reraise(exc_type, exc_value, tb)
2019-11-17T09:06:00.662498+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
2019-11-17T09:06:00.662500+00:00 app[web.1]: raise value
2019-11-17T09:06:00.662502+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 2446, in wsgi_app
2019-11-17T09:06:00.662505+00:00 app[web.1]: response = self.full_dispatch_request()
2019-11-17T09:06:00.662507+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 1951, in full_dispatch_request
2019-11-17T09:06:00.662509+00:00 app[web.1]: rv = self.handle_user_exception(e)
2019-11-17T09:06:00.662511+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 1820, in handle_user_exception
2019-11-17T09:06:00.662513+00:00 app[web.1]: reraise(exc_type, exc_value, tb)
2019-11-17T09:06:00.662515+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
2019-11-17T09:06:00.662517+00:00 app[web.1]: raise value
2019-11-17T09:06:00.662519+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 1949, in full_dispatch_request
2019-11-17T09:06:00.662521+00:00 app[web.1]: rv = self.dispatch_request()
2019-11-17T09:06:00.662523+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 1935, in dispatch_request
2019-11-17T09:06:00.662526+00:00 app[web.1]: return self.view_functions[rule.endpoint](**req.view_args)
2019-11-17T09:06:00.662528+00:00 app[web.1]: File "/app/project.py", line 27, in index
2019-11-17T09:06:00.662530+00:00 app[web.1]: 'questions': Questions.query.order_by(desc('create_time')).all()
2019-11-17T09:06:00.662532+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/orm/query.py", line 3186, in all
2019-11-17T09:06:00.662535+00:00 app[web.1]: return list(self)
2019-11-17T09:06:00.662537+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/orm/query.py", line 3342, in __iter__
2019-11-17T09:06:00.662539+00:00 app[web.1]: return self._execute_and_instances(context)
2019-11-17T09:06:00.662541+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/orm/query.py", line 3367, in _execute_and_instances
2019-11-17T09:06:00.662544+00:00 app[web.1]: result = conn.execute(querycontext.statement, self._params)
2019-11-17T09:06:00.662546+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 988, in execute
2019-11-17T09:06:00.662548+00:00 app[web.1]: return meth(self, multiparams, params)
2019-11-17T09:06:00.662550+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/sql/elements.py", line 287, in _execute_on_connection
2019-11-17T09:06:00.662552+00:00 app[web.1]: return connection._execute_clauseelement(self, multiparams, params)
2019-11-17T09:06:00.662555+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1107, in _execute_clauseelement
2019-11-17T09:06:00.662557+00:00 app[web.1]: distilled_params,
2019-11-17T09:06:00.662559+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1253, in _execute_context
2019-11-17T09:06:00.662562+00:00 app[web.1]: e, statement, parameters, cursor, context
2019-11-17T09:06:00.662564+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1473, in _handle_dbapi_exception
2019-11-17T09:06:00.662566+00:00 app[web.1]: util.raise_from_cause(sqlalchemy_exception, exc_info)
2019-11-17T09:06:00.662568+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 398, in raise_from_cause
2019-11-17T09:06:00.662570+00:00 app[web.1]: reraise(type(exception), exception, tb=exc_tb, cause=cause)
2019-11-17T09:06:00.662573+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 152, in reraise
2019-11-17T09:06:00.662575+00:00 app[web.1]: raise value.with_traceback(tb)
2019-11-17T09:06:00.662587+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1249, in _execute_context
2019-11-17T09:06:00.662590+00:00 app[web.1]: cursor, statement, parameters, context
2019-11-17T09:06:00.662592+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/sqlalchemy/engine/default.py", line 580, in do_execute
2019-11-17T09:06:00.662594+00:00 app[web.1]: cursor.execute(statement, parameters)
2019-11-17T09:06:00.662596+00:00 app[web.1]: sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "question" does not exist
2019-11-17T09:06:00.662599+00:00 app[web.1]: LINE 2: FROM question ORDER BY question.create_time DESC
2019-11-17T09:06:00.662601+00:00 app[web.1]: ^
2019-11-17T09:06:00.662603+00:00 app[web.1]:
2019-11-17T09:06:00.662607+00:00 app[web.1]: [SQL: SELECT question.id AS question_id, question.title AS question_title, question.content AS question_content, question.create_time AS question_create_time, question.author_id AS question_author_id
2019-11-17T09:06:00.662609+00:00 app[web.1]: FROM question ORDER BY question.create_time DESC]

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
ubuntu16.04+nginx+uwsgi部署flask项目
ubuntu+nginx+uwsgi部署flask项目 启动uwsgi时报错 ![图片说明](https://img-ask.csdn.net/upload/201909/10/1568120498_466197.png) 这是uwsgi配置文件 ![图片说明](https://img-ask.csdn.net/upload/201909/10/1568120570_631163.jpg) 这是nginx配置文件 ![图片说明](https://img-ask.csdn.net/upload/201909/10/1568120618_22683.jpg) 这是目录结构
vuejs和flask的文件夹设置问题
各位高手,我在使用vuecli3和flask开发,我在目前开发的时候遇到用户头像图片该怎么放置的问题,详细如下: 1.我目前是vuecli3和flask单独运行,中间只用axios做一些数据交互。那我的用户头像图片是该放在vue目录下还是放在flask目录下? 2.如果放在flask目录下,那我在vue中该怎么写路径? 3.我目前开发是在vuecli3下写的代码,我build之后生成的文件该放在哪里? 4.综上问题,各位高手能不能给我一个vuecli3和flask的目录放置demo。
CentOS 7部署Flask项目
CentOS 7部署Flask项目后外网无法访问 使用uwsgi部署: ``` [uwsgi] # 外部访问地址,可以指定多种协议,现在用http便于调试,之后用socket http = 0.0.0.0:5000 # 指向项目目录 chdir = /root/python/ # flask启动程序文件 wsgi-file = app.py # flask在manage.py文件中的app名 callable = app # 处理器数 processes = 4 # 线程数 threads = 2 #状态检测地址 stats = 127.0.0.1:5001 ``` ![端口](https://img-ask.csdn.net/upload/201901/16/1547639721_156540.png) 已允许5000端口
全栈任务:用vuejs和flask写一个下载的组件
各位高手,我有一个比较特别的需求, 我在页面中有个a标签的文件名,用v-model绑定了一个文件id号,链接,点击后下载对应文件(我对应的文件都是以id号命名的) 本人纯业余学习vuejs+flask,只想完成一个公益网站,这个网站对社会很有意义,我之前只会增删改查,遇到这种文件上传下载就纯懵逼,我查了网站很多资料,都没有特别匹配我flask和vuejs。 希望各位多帮忙,帮我写个demo,代码能简单就简单,难的话我也看不懂,希望加注释,包括你大概的思路,用了哪些模块或者组件。 我的微信是15205166002,可以加微信交流在线指导。
flask响应return时老是报相同的错:TypeError: The view function did not return a valid response. The function either returned None or ended without a return statement.
flask响应return时老是报相同的错:TypeError: The view function did not return a valid response. The function either returned None or ended without a return statement. python代码为: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200124022917753.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMjQ0MTQ3,size_16,color_FFFFFF,t_70) html代码: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200124022948221.png) 奇怪的是另一个与这样相同的响应可以成功跳转,但只有这个不行…… 求助!!!
python flask包使用。。。。。
![图片说明](https://img-ask.csdn.net/upload/202002/06/1580974180_632939.jpg)![图片说明](https://img-ask.csdn.net/upload/202002/06/1580974198_207304.png)![图片说明](https://img-ask.csdn.net/upload/202002/06/1580974206_672162.png) 按书中,在jupyter中写了段使用flask包的代码,放在cmd中运行不出,请问这个问题如何解决
flask-socketio中文乱码问题
前端没有问题,但是只要通过socketio传到后端,中文就会变为乱码。 在自己win10测试没有这个问题,部署在server2019的服务器上就乱码了 求解决
关于python自动化运维的一些问题
最近在看python的视频进行学习,基础的已经看完了,现在开始学习进阶的,现在在看django,我学习python不是为了专门的python就业,我现在主要的工作方向是网络和云,希望python能帮助我写一些自动化的脚本以及一些功能来提升工作效率,比如网络的一些告警监控上报啊,自动化配置脚本之类的,想问下,是否建议一定系统学习?比如django flask这些都要学习,现在看来,感觉django学习了后面也不是很有用处?可能跟我本身不是程序员出生有关系吧,对这些不够敏感,想有学习经验的告诉下,主要是是否需要继续学下去以及一些建议,谢谢了
为什么我的运行结果没有被替代掉还是dif1的赋值
为什么我的return结果还是inf,应该是已经用dif1替换掉了啊 ``` class Solution: def threeSumClosest(self, nums: List[int], target: int) -> int: dif1 = float('inf') for i in range(0,len(nums)): for j in range(i+1,len(nums)-1): for k in range(j+1,len(nums)-2): sum1 = nums[i]+nums[k]+nums[j] dif2 = abs(sum1 - target) if dif2 < dif1: dif1 = dif2 return dif1 ```
为什么我的pyecharts柱形图表部署在flask后,横坐标由原来的文字标签变成数字了?
求助各位大佬!我是一个pyecharts小白,下面是我用flask部署pyecharts的代码。 ``` import pandas as pd from flask import Flask, render_template from pyecharts import options as opts from pyecharts.charts import Bar from pyecharts.charts import Timeline from pyecharts.charts import Pie app = Flask(__name__, static_folder="templates") data总=pd.read_csv('datazong.csv',encoding='utf-8') zuojia = pd.read_csv('zuojia.csv',encoding='gbk') X轴=[str(x) for x in zuojia.loc[:,'网络作家']] Y轴=[str(x) for x in zuojia.loc[:,'版税收入(万元)']] def bar_datazoom_inside() -> Timeline: tl = Timeline() for i in range(2014, 2020): c = ( Bar() .add_xaxis(list(zip(list(data总.index)))) .add_yaxis("显示",list(data总["{}".format(i)])) .set_global_opts( title_opts=opts.TitleOpts(title="纵横小说月票榜"), datazoom_opts=opts.DataZoomOpts(type_="inside"), visualmap_opts=opts.VisualMapOpts(type_="color", max_=250000, min_=200,pos_right='20',pos_top='middle'), toolbox_opts=opts.ToolboxOpts(), ) .set_series_opts( label_opts=opts.LabelOpts(is_show=False), markpoint_opts=opts.MarkPointOpts( data=[ opts.MarkPointItem(type_="max", name="最大值"), opts.MarkPointItem(type_="min", name="最小值"), ] ), ) ) tl.add(c, "{}年".format(i)) return tl def pie_rosetype() -> Pie: c = ( Pie() .add( "", [list(z) for z in zip(X轴, Y轴)], radius=["30%", "60%"], center=["50%", "60%"], rosetype="area", ) .set_global_opts(title_opts=opts.TitleOpts(title="2018作家版税收入榜单",pos_top = 'middle')) .set_series_opts( label_opts=opts.TextStyleOpts(font_style='oblique') ) ) return c @app.route("/") def index(): return render_template("index.html") @app.route("/barChart") def get_bar_chart(): tl = bar_datazoom_inside() return tl.dump_options_with_quotes() @app.route("/2") def index2(): return render_template("index2.html") @app.route("/barChart2") def get_bar_chart2(): c = pie_rosetype() return c.dump_options_with_quotes() if __name__ == "__main__": app.run() ``` 代码没问题,也能够将网站部署出来,如下图: ![flask](https://img-ask.csdn.net/upload/201912/29/1577606001_509738.png) 但是!我的横坐标变成数字了,原来在jupyter简单的render后产生的可视化横坐标是正常的如: ![图片说明](https://img-ask.csdn.net/upload/201912/29/1577606183_550451.png) 请各位大佬帮帮忙,我实在搞不明白哪里出错了。 下面是我的index.html代码。 ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Awesome-pyecharts</title> <script src="https://cdn.bootcss.com/jquery/3.0.0/jquery.min.js"></script> <script type="text/javascript" src="https://assets.pyecharts.org/assets/echarts.min.js"></script> </head> <body> <div id="bar" style="width:1000px; height:600px;"></div> <script> $( function () { var chart = echarts.init(document.getElementById('bar'), 'white', {renderer: 'canvas'}); $.ajax({ type: "GET", url: "http://127.0.0.1:5000/barChart", dataType: 'json', success: function (result) { chart.setOption(result); } }); } ) </script> </body> </html> ```
flask蓝图模式下,怎么使用pymongo
``` from flask import Flask from flask-pymongo import PyMongo app = Flask(__name__) app.config.update( MONGO_HOST='localhost', MONGO_PORT=27017, MONGO_USERNAME='bjhee', MONGO_PASSWORD='111111', MONGO_DBNAME='flask' ) mongo = PyMongo(app) ``` 这是直接在入口文件里写的方法 现在加入里蓝图 home.py ``` from flask import Blueprint import mysql.connector, logging from flask_pymongo import PyMongo import app home = Blueprint('home', __name__, url_prefix='/home') mongo = PyMongo(app) // 这里应该怎么写 因为不存在app @home.route('/test') def move_tickets_to_mongo(): res = mongo.db.acct_data_logs.find({}) ``` 这里会报错, 因为找不到app
python flask_sqlalchemy如何维护一个全局查询结果
在我的webapp中,每个页面都要用到同一个一般不会变化的查询结果,为避免每次访问都需查询一次这个变量,我在views.py中弄了一个全局变量ADMIN_NOTES ``` ADMIN_NOTES=Note.query.filter_by(author_id=ADMIN.id).all() ``` 而当ADMIN_NOTE会发生变化时,如此时管理员又写入了一个新note,则重新查询数据库获得最新的ADMIN_NOTE的值,尽量减少访问数据库的次数 我本想这么实现的(中间部分不重要的代码省略了) ``` #全局变量 ADMIN_NOTES=Note.query.filter_by(author_id=ADMIN.id).all() #写入新note的函数1 @app.route('/new_note',methods=['GET','POST']) def new_note(): global ADMIN_NOTES data=json.loads(request.get_data()) note=Note(title=data['note_title'],upload_time=datetime.utcnow()) db.session.add(note) db.session.commit() #若是管理员写入新note,则重新查询并修改全局变量ADMIN_NOTES if note.author.nickname=='ADMIN': ADMIN_NOTES=Note.query.filter_by(author_id=ADMIN.id).all() KAFENUT_NOTES[0].author.nickname #能正确访问ADMIN_NOTES print(len(ADMIN_NOTES)) #正确访问ADMIN_NOTES resp['success']=True resp['text']='Upload successfully!' resp['url']=url_for('note',note_id=note.id,nickname=note.author.nickname) #浏览器接受到服务器的json之后跳转到,resp[url]所指示的页面,即下面这个页面 return json.dumps(resp) #返回note页面的函数2 @app.route('/<nickname>/note/<note_id>',methods=['GET','POST']) def note(nickname,note_id): global ADMIN_NOTES user=User.query.filter_by(nickname=nickname).first() note=Note.query.filter_by(id=note_id).first() if request.method=='GET': note.view_num+=1 db.session.add(note) db.session.commit() for nnote in ADMIN_NOTES: print(nnote.author.nickname) #出错位置 return render_template('note_page.html',note=note,admin_notes=ADMIN_NOTES) ``` 然而问题也正出在这里,当管理员写入新的note之后(即ADMIN_NOTES这个全局变量发生变化之后)重新查询的语句虽然在函数1中执行了(print出的note数量是写入新note之后的数量,)。但当用户根据函数1返回的json跳转到函数2的时候,函数2内就无法正确访问ADMIN_NOTES,准确来说无法访问nnote.author.nickname,其中author是note表用author_id这个外键连接到user表得到的,错误栈如下 ``` Traceback (most recent call last): File "C:\Users\MSI-1\Anaconda3\lib\site-packages\flask\app.py", line 1997, in __call__ return self.wsgi_app(environ, start_response) File "C:\Users\MSI-1\Anaconda3\lib\site-packages\flask\app.py", line 1985, in wsgi_app response = self.handle_exception(e) File "C:\Users\MSI-1\Anaconda3\lib\site-packages\flask\app.py", line 1540, in handle_exception reraise(exc_type, exc_value, tb) File "C:\Users\MSI-1\Anaconda3\lib\site-packages\flask\_compat.py", line 33, in reraise raise value File "C:\Users\MSI-1\Anaconda3\lib\site-packages\flask\app.py", line 1982, in wsgi_app response = self.full_dispatch_request() File "C:\Users\MSI-1\Anaconda3\lib\site-packages\flask\app.py", line 1614, in full_dispatch_request rv = self.handle_user_exception(e) File "C:\Users\MSI-1\Anaconda3\lib\site-packages\flask\app.py", line 1517, in handle_user_exception reraise(exc_type, exc_value, tb) File "C:\Users\MSI-1\Anaconda3\lib\site-packages\flask\_compat.py", line 33, in reraise raise value File "C:\Users\MSI-1\Anaconda3\lib\site-packages\flask\app.py", line 1612, in full_dispatch_request rv = self.dispatch_request() File "C:\Users\MSI-1\Anaconda3\lib\site-packages\flask\app.py", line 1598, in dispatch_request return self.view_functions[rule.endpoint](**req.view_args) File "E:\vs\python\AwesomeWebApp\AwesomeWebApp\app\views.py", line 232, in note print(nnote.author.nickname) #let author.id be preloaded File "C:\Users\MSI-1\Anaconda3\lib\site-packages\sqlalchemy\orm\attributes.py", line 282, in __get__ return self.impl.get(instance_state(instance), dict_) File "C:\Users\MSI-1\Anaconda3\lib\site-packages\sqlalchemy\orm\attributes.py", line 710, in get value = self.callable_(state, passive) File "C:\Users\MSI-1\Anaconda3\lib\site-packages\sqlalchemy\orm\strategies.py", line 688, in _load_for_state % (orm_util.state_str(state), self.key) sqlalchemy.orm.exc.DetachedInstanceError: Parent instance <Note at 0x26de5f41198> is not bound to a Session; lazy load operation of attribute 'author' cannot proceed (Background on this error at: http://sqlalche.me/e/bhk3) ``` sqlalchemy报出detached错误 sqlalchemy.orm.exc.DetachedInstanceError: Parent instance <Note at 0x26de5f41198> is not bound to a Session; lazy load operation of attribute 'author' cannot proceed (Background on this error at: http://sqlalche.me/e/bhk3) 这该怎么解决?或者还有什么其他方法实现:在我的webapp中,每个页面都要用到同一个一般不会变化的查询结果,为避免每次访问都需查询一次这个一般不会变量,我在views.py中弄了一个全局变量ADMIN_NOTES。而当ADMIN_NOTE会发生变化时,如此时管理员又写入了一个新note,则重新查询数据库获得最新的ADMIN_NOTE的值,尽量减少访问数据库的次数
Flask使用不了服务器80端口
................![整个代码](https://img-ask.csdn.net/upload/202001/07/1578364356_859201.png) ............... ![在本地运行无误](https://img-ask.csdn.net/upload/202001/07/1578364392_153955.png) ...........................![服务器上报错](https://img-ask.csdn.net/upload/202001/07/1578364421_438709.png) 本地测试是没有毛病 但是在服务器上就打不开80口 不知道是哪方面的毛病 80口打不开 ,但是修改成5000就能打开 但是我需要的是80端口
flask中sqlalchemy中的异常都有哪些?继承的父类异常是什么
需要捕获到异常然后进行处理,不能使用EXCEOTION这个基类,所以需要知道其他的异常类型
利用flask+celery+flask_mail扩展异步发送邮件时,celery会出现上下文问题,有人能解决吗?网上找了很多,都感觉很模糊
``` import random from flask import Flask, request, jsonify, render_template, current_app from celery import Celery from flask_mail import Message, Mail import settings app = Flask(__name__) app.config.from_object(settings.BaseConfig) mail = Mail(app) celery = Celery(app.name, broker=app.config['CELERY_BROKER_URL']) celery.conf.update(app.config) @celery.task def send_async_email(subject, to, expire_minute): app = current_app._get_current_object() msg = Message(subject=subject, sender=app.config['MAIL_DEFAULT_SENDER'], recipients=[to]) msg.body = 'This is a test email sent from a background Celery task.' vcode = ''.join([str(i) for i in random.sample(range(0, 10), 4)]) context = { 'subject': subject, 'expire_minute': expire_minute, 'vcode': vcode, # 'debug': get_config_partial('DEBUG'), # 'debug': True, } msg.html = render_template(app.config['EMAIL_TEMPLATE'] + '.html', **context) # with app.app_context(): mail.send(msg) @app.route('/send_email', methods=['POST']) def send_email(): try: subject = request.form.get("subject") to = request.form.get("to") expire_minute = request.form.get("expire_minute") except: return jsonify({'msg': '参数有误'}) # send_async_email.delay(app, msg) send_async_email.apply_async(args=[subject, to, expire_minute]) message = '邮件发送成功' return jsonify(message=message) if __name__ == '__main__': app.run() ``` 这是我的settings文件 ``` class BaseConfig(object): CELERY_BROKER_URL = 'amqp://guest:guest@localhost:5672//' BACKEND = None RABBITMQ_QUEUE = 'hello' MAIL_SERVER = 'smtp.163.com ' MAIL_PORT = 25 MAIL_USE_TLS = True MAIL_USERNAME = 'mini@ 163.com' MAIL_PASSWORD = '1314AC' MAIL_DEFAULT_SENDER = 'mini @ 163.com' DEFAULT_FROM_EMAIL = 'mini @ 163.com' EMAIL_TEMPLATE = 'email' ```
Python中用flask怎么将HTML中模拟的数据替换为自己MySQL中的数据。
1.在做Python连接hive时已将数据库表中的数据查出来,去百度开源软件——ECharts中下载了一个html的模板,怎么将模板中模拟的数据替换为自己数据库表中的数据? Python代码: ``` from flask import Flask,render_template app = Flask(__name__) # 实例化app对象 @app.route('/') def yufun(): conn = connect(host="yue1", port=10000, user='root', password="123", database="db_zlf_15", auth_mechanism="PLAIN") cur = conn.cursor() cur.execute('select * from tb_zlf_15') # fetchall返回多个元组,即返回多条记录(rows),如果没有结果,则返回 () for result in cur.fetchall(): print(result) conn.close() return render_template('candlestick-sh.html') if __name__ == '__main__': app.run() ``` ## Python查出数据库表中的数据如下: ![图片说明](https://img-ask.csdn.net/upload/201912/22/1576981251_458475.jpg) ## html模板中模拟的数据: ![图片说明](https://img-ask.csdn.net/upload/201912/22/1576981374_655799.jpg) ## html模板运行的效果: ![图片说明](https://img-ask.csdn.net/upload/201912/22/1576981856_705289.jpg)
请问为什么后台获取不到表单数据
![图片说明](https://img-ask.csdn.net/upload/202002/02/1580621264_510387.png) ![图片说明](https://img-ask.csdn.net/upload/202002/02/1580621287_929596.png)![图片说明](https://img-ask.csdn.net/upload/202002/02/1580621300_411017.png)
python 中url_for中的路径动态参数?
从设计不同的角色登录中实现不同的菜单时,将菜单存到数据库,现在实现目录 a便签跳转时,填入href的参数是后台获取的,但python的请求需要用href="{{url_fot()}}",而url_for的动态参数该怎么写 ``` {# menus为一级菜单,menu_为二级菜单 #} {% for menu in menus %} <li> <a href="#"><i class="{{ menu.icon }}"></i> <span class="nav-label">{{ menu.menustr }}</span> <span class="fa arrow"></span></a> <ul class="nav nav-second-level"> {% for menu_c in menu.children %} {# menu_c.path 是后台出入的目录路径#} <li><a target="right" href="{{url_for( menu_c.path)}}" aria-expanded="false">{{ menu_c.menustr }} </a></li> {% endfor %} </ul> </li> ``` 这个写法不可行![图片说明](https://img-ask.csdn.net/upload/202001/28/1580222596_630053.png)
python为什么使用sorted和sort输出结果不一样
在刷算法题的时候碰到了一个问题 Given an array of integers A sorted in non-decreasing order, return an array of the squares of each number, also in sorted non-decreasing order. ``` B = [] for n in A: B.append(n**2) return B.sort() ``` 和 ``` B = [] for n in A: B.append(n**2) return sorted(B) ``` 输出结果不一样是为什么 第一个B.sort()输出是[]空列表
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
面试官问我:什么是消息队列?什么场景需要他?用了会出现什么问题?
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
8年经验面试官详解 Java 面试秘诀
作者 |胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。 Java程序员准备和投递简历的实...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
MyBatis研习录(01)——MyBatis概述与入门
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis原本是apache的一个开源项目iBatis, 2010年该项目由apache software foundation 迁移到了google code并改名为MyBatis 。2013年11月MyBatis又迁移到Github。
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip installselenium -ihttps://pypi.tuna.tsinghua.edu.cn/simple/ ...
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
Python爬虫精简步骤1 获取数据
爬虫,从本质上来说,就是利用程序在网上拿到对我们有价值的数据。 爬虫能做很多事,能做商业分析,也能做生活助手,比如:分析北京近两年二手房成交均价是多少?广州的Python工程师平均薪资是多少?北京哪家餐厅粤菜最好吃?等等。 这是个人利用爬虫所做到的事情,而公司,同样可以利用爬虫来实现巨大的商业价值。比如你所熟悉的搜索引擎——百度和谷歌,它们的核心技术之一也是爬虫,而且是超级爬虫。 从搜索巨头到人工...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
web前端javascript+jquery知识点总结
1.Javascript 语法.用途 javascript 在前端网页中占有非常重要的地位,可以用于验证表单,制作特效等功能,它是一种描述语言,也是一种基于对象(Object)和事件驱动并具有安全性的脚本语言 ...
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o...
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ...... ...
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!...
渗透测试-灰鸽子远控木马
木马概述 灰鸽子( Huigezi),原本该软件适用于公司和家庭管理,其功能十分强大,不但能监视摄像头、键盘记录、监控桌面、文件操作等。还提供了黑客专用功能,如:伪装系统图标、随意更换启动项名称和表述、随意更换端口、运行后自删除、毫无提示安装等,并采用反弹链接这种缺陷设计,使得使用者拥有最高权限,一经破解即无法控制。最终导致被黑客恶意使用。原作者的灰鸽子被定义为是一款集多种控制方式于一体的木马程序...
Python:爬取疫情每日数据
前言 目前每天各大平台,如腾讯、今日头条都会更新疫情每日数据,他们的数据源都是一样的,主要都是通过各地的卫健委官网通报。 以全国、湖北和上海为例,分别为以下三个网站: 国家卫健委官网:http://www.nhc.gov.cn/xcs/yqtb/list_gzbd.shtml 湖北卫健委官网:http://wjw.hubei.gov.cn/bmdt/ztzl/fkxxgzbdgrfyyq/xxfb...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合...
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名...
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计...
Python新型冠状病毒疫情数据自动爬取+统计+发送报告+数据屏幕(三)发送篇
今天介绍的项目是使用 Itchat 发送统计报告 项目功能设计: 定时爬取疫情数据存入Mysql 进行数据分析制作疫情报告 使用itchat给亲人朋友发送分析报告 基于Django做数据屏幕 使用Tableau做数据分析 来看看最终效果 目前已经完成,预计2月12日前更新 使用 itchat 发送数据统计报告 itchat 是一个基于 web微信的一个框架,但微信官方并不允许使用这...
作为程序员的我,大学四年一直自学,全靠这些实用工具和学习网站!
我本人因为高中沉迷于爱情,导致学业荒废,后来高考,毫无疑问进入了一所普普通通的大学,实在惭愧???? 我又是那么好强,现在学历不行,没办法改变的事情了,所以,进入大学开始,我就下定决心,一定要让自己掌握更多的技能,尤其选择了计算机这个行业,一定要多学习技术。 在进入大学学习不久后,我就认清了一个现实:我这个大学的整体教学质量和学习风气,真的一言难尽,懂的人自然知道怎么回事? 怎么办?我该如何更好的提升自...
粒子群算法求解物流配送路线问题(python)
1.Matlab实现粒子群算法的程序代码:https://www.cnblogs.com/kexinxin/p/9858664.html matlab代码求解函数最优值:https://blog.csdn.net/zyqblog/article/details/80829043 讲解通俗易懂,有数学实例的博文:https://blog.csdn.net/daaikuaichuan/article/...
教你如何编写第一个简单的爬虫
很多人知道爬虫,也很想利用爬虫去爬取自己想要的数据,那么爬虫到底怎么用呢?今天就教大家编写一个简单的爬虫。 下面以爬取笔者的个人博客网站为例获取第一篇文章的标题名称,教大家学会一个简单的爬虫。 第一步:获取页面 #!/usr/bin/python # coding: utf-8 import requests #引入包requests link = "http://www.santostang....
前端JS初级面试题二 (。•ˇ‸ˇ•。)老铁们!快来瞧瞧自己都会了么
1. 传统事件绑定和符合W3C标准的事件绑定有什么区别? 传统事件绑定 &lt;div onclick=""&gt;123&lt;/div&gt; div1.onclick = function(){}; &lt;button onmouseover=""&gt;&lt;/button&gt; 注意: 如果给同一个元素绑定了两次或多次相同类型的事件,那么后面的绑定会覆盖前面的绑定 (不支持DOM事...
相关热词 c#开发的dll注册 c#的反射 c# grid绑定数据源 c#多线程怎么循环 c# 鼠标左键 c# char占位符 c# 日期比较 c#16进制转换为int c#用递归求顺序表中最大 c#小型erp源代码
立即提问