我有一个名为ticker_symbol的列,但当我运行错误时,发现没有这样的列。这是我到目前为止的auth.py代码。它类似于Flask教程代码。我从flaskr.company_数据库模块获取get_db函数。我试图让用户在论坛中输入股票符号,我的Python代码将通过数据库查找股票符号。还有更多的代码,但这并不重要,因为我无法完成这部分代码
import functools
from flask import (
Blueprint, Flask, flash, g, redirect, render_template, request, session, url_for
)
from werkzeug.security import check_password_hash, generate_password_hash
from flaskr.company_database import get_db
#app = Flask(__name__)
bp = Blueprint('stock_search', __name__, url_prefix='/')
@bp.route('/', methods=('GET', 'POST'))
def enter_ticker_symbol():
if request.method == 'POST': # The server accepts user input
ticker_symbol = request.form['ticker_symbol'] # Returns Immutiable (Unchanged) Multi Dictionary
company_database = get_db()
error = None
ticker_symbol = company_database.execute(
'SELECT * FROM ticker_symbols WHERE ticker_symbol = ?', (ticker_symbol,)
).fetchone()
这是我的companydatabase.py文件
import sqlite3
import click
from flask import current_app, g
# g stores data that might need to be accessed by multiple functions during request
# current_app
from flask.cli import with_appcontext
def get_db():
# Connects to a database
if 'company_database' not in g:
g.company_database = sqlite3.connect(
current_app.config['DATABASE'],
detect_types = sqlite3.PARSE_DECLTYPES
)
g.company_database.row_factory = sqlite3.Row
return g.company_database
这是我的schema.sql文件
DROP TABLE IF EXISTS ticker_symbols;
CREATE TABLE ticker_symbols (
id INT PRIMARY KEY AUTOINCREMENT,
ticker_symbol VARCHAR (10),
company_name VARCHAR(255)
);
这是我的init文件
# This file contains application factory (whatever that means, provides structural foundation for flask app) and flaskr treated as package
import os
from flask import Flask
def create_app(test_config=None): # This function is known as the application factoryu
# create and configure the app
# Any configuration, registration, and other setup the application needs happens inside function
app = Flask(__name__, instance_relative_config=True)
# Creates flask instance
# __name__ is name of current Python module
# instance_relative_config=True shows configuration files are relative to instance folder
# Instance folder is outside flaskr package and can hold local data that shouldn't be commited to version control
# Examples of files that shouldnt be with version control, configuration secrets and database file
app.config.from_mapping(
SECRET_KEY='dev', # Temporary
DATABASE=os.path.join(app.instance_path, 'flask.sqlite'),
# SQLite database file is stored here.
)
if test_config is None:
# load the instance config, if it exists, when not testing
app.config.from_pyfile('config.py', silent=True)
# The config.py file replaces the SECRET_KEY with real SECRET_KEY
else:
# load the test config if passed in
app.config.from_mapping(test_config)
# Use code from above (app.config.from_mapping)
# ensure the instance folder exists
try:
os.makedirs(app.instance_path)
# Does the app.instance path exist?
# This is needed because the SQLite database file will be created there
# Flask doesnt create instance folders automatically
except OSError:
pass
from . import auth
app.register_blueprint(auth.bp)
from . import company_database
company_database.init_app(app)
return app
这是我的回溯
Traceback (most recent call last):
File "/home/nbosio1001/anaconda3/lib/python3.7/site-packages/flask/app.py", line 2463, in __call__
return self.wsgi_app(environ, start_response)
File "/home/nbosio1001/anaconda3/lib/python3.7/site-packages/flask/app.py", line 2449, in wsgi_app
response = self.handle_exception(e)
File "/home/nbosio1001/anaconda3/lib/python3.7/site-packages/flask/app.py", line 1866, in handle_exception
reraise(exc_type, exc_value, tb)
File "/home/nbosio1001/anaconda3/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/home/nbosio1001/anaconda3/lib/python3.7/site-packages/flask/app.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "/home/nbosio1001/anaconda3/lib/python3.7/site-packages/flask/app.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/nbosio1001/anaconda3/lib/python3.7/site-packages/flask/app.py", line 1820, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/nbosio1001/anaconda3/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/home/nbosio1001/anaconda3/lib/python3.7/site-packages/flask/app.py", line 1949, in full_dispatch_request
rv = self.dispatch_request()
File "/home/nbosio1001/anaconda3/lib/python3.7/site-packages/flask/app.py", line 1935, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/nbosio1001/Documents/python/Fundamental_Analysis/selenium_python_small_sample_project/flask-tutorial/flaskr/auth.py", line 20, in enter_ticker_symbol
'SELECT * FROM ticker_symbols WHERE ticker_symbol = ?', (ticker_symbol,)
sqlite3.OperationalError: no such column: ticker_symbol
更改架构时,再次运行
init-db
命令以重新创建数据库替代执行
你能试试下面的吗
我认为是您的变量
ticker_symbol
导致了这个问题。详情见here (Python Doc)和here (sqlite3.OperationalError: no such column:)还要确保您已经实际创建了表,正如上面的注释所指出的
相关问题 更多 >
编程相关推荐