Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 错误:没有这样的列_Python_Sqlite_Flask - Fatal编程技术网

Python 错误:没有这样的列

Python 错误:没有这样的列,python,sqlite,flask,Python,Sqlite,Flask,我想用flask创建一个网站,它有一个带有链接的表,用户用html表单将链接放在那里 from flask import Flask, render_template, request, redirect from flask_sqlalchemy import SQLAlchemy from datetime import datetime app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///hom

我想用flask创建一个网站,它有一个带有链接的表,用户用html表单将链接放在那里

from flask import Flask, render_template, request, redirect
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///home.db'
db = SQLAlchemy(app)

class links(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(30), nullable=True)
    title = db.Column(db.String(30), nullable=False)
    link = db.Column(db.String(200), nullable=False)
    date_added = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
    
    def __repr__(self):
        return f'<link {self.id}>'

@app.route('/home', methods=['GET', 'POST'])
def home ():
    if request.method == 'POST':
        link_name = request.form["name"]
        link_title = request.form["title"]
        link_link = request.form["link"]
        new_link = links(name=link_name, title=link_title, link=link_link)
        
        try:
            db.session.add(new_link)
            db.session.commit()
            return redirect('/home')
        except:
            return 'there was a problem'
    else:
        li = links.query.order_by(links.date_added).all()
        return render_template('home.html', li=li)
        
if __name__ == "__main__":
    app.run(debug=True)
我在网上做了一些研究,但没有发现任何东西。。。
如何修复此问题?

如果您在项目目录中看到,但没有看到“home.db”文件,那么看起来您确实没有创建sqlite文件

然后打开python终端并执行以下操作:

  • envirorments文件夹中带有的CMD:

    >>> from app import db
    >>> db.create_all()
    >>> exit() #or ctrl + z then enter 
    
    
  • 注 如果已删除名为“home.db”的文件并再次运行上述代码,这是因为您可能已经创建了该文件,但随后添加了“name=db.Column(db.String(30),nullable=True)”

    如果上述方法无法解决问题,请检查这一行代码:

    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///home.db'
    
    >对此:

    导入操作系统

    app = Flask(__name__)
    
    basedir = os.path.abspath(os.path.dirname(__file__))
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///'+os.path.join(basedir, 'data.sqlite')
    

    然后运行代码。另外,请记住,每次进行更改时都要删除文件“home.db”

    如果您在项目目录中看到的是“home.db”文件,而不是它,那么看起来您确实没有创建sqlite文件

    然后打开python终端并执行以下操作:

  • envirorments文件夹中带有的CMD:

    >>> from app import db
    >>> db.create_all()
    >>> exit() #or ctrl + z then enter 
    
    
  • 注 如果已删除名为“home.db”的文件并再次运行上述代码,这是因为您可能已经创建了该文件,但随后添加了“name=db.Column(db.String(30),nullable=True)”

    如果上述方法无法解决问题,请检查这一行代码:

    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///home.db'
    
    >对此:

    导入操作系统

    app = Flask(__name__)
    
    basedir = os.path.abspath(os.path.dirname(__file__))
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///'+os.path.join(basedir, 'data.sqlite')
    

    然后运行代码。还记得每次更改时都要删除文件“home.db”

    检查我的答案检查我的答案