创建SQLAlchemy数据库时出现ArgumentError错误

时间:2019-12-29 19:42:22

标签: python python-3.x flask sqlalchemy flask-sqlalchemy

我不明白是什么错误,我按照说明进行了所有操作)

尝试创建数据库时发生错误

文本错误:

   Traceback (most recent call last):
      File "C:\Users\Alex\Desktop\AlNews\env\lib\site-packages\sqlalchemy\sql\schema.py", line 108, in _init_items
        spwd = item._set_parent_with_dispatch
    AttributeError: 'function' object has no attribute '_set_parent_with_dispatch'

上述异常是以下异常的直接原因:

   Traceback (most recent call last):
      File "c:/Users/Alex/Desktop/AlNews/news_app/app.py", line 3, in <module>
        from model import db
      File "c:\Users\Alex\Desktop\AlNews\news_app\model.py", line 5, in <module>
        class News(db.Model):
      File "c:\Users\Alex\Desktop\AlNews\news_app\model.py", line 7, in News
        title = db.Column(db.text, nullable=False)
      File "C:\Users\Alex\Desktop\AlNews\env\lib\site-packages\sqlalchemy\sql\schema.py", line 1388, in __init__
        self._init_items(*args)
      File "C:\Users\Alex\Desktop\AlNews\env\lib\site-packages\sqlalchemy\sql\schema.py", line 113, in _init_items
        "'Constraint' expected, got %r" % item
      File "C:\Users\Alex\Desktop\AlNews\env\lib\site-packages\sqlalchemy\util\compat.py", line 398, in raise_from_cause
        reraise(type(exception), exception, tb=exc_tb, cause=cause)
      File "C:\Users\Alex\Desktop\AlNews\env\lib\site-packages\sqlalchemy\util\compat.py", line 152, in reraise
        raise value.with_traceback(tb)
      File "C:\Users\Alex\Desktop\AlNews\env\lib\site-packages\sqlalchemy\sql\schema.py", line 108, in _init_items
        spwd = item._set_parent_with_dispatch
    sqlalchemy.exc.ArgumentError: 'SchemaItem' object, such as a 'Column' or a 'Constraint' expected, got <function text at 0x0000000003869288>

项目结构: project ctructure

app.py:

from flask import Flask, render_template, request

from model import db

def create_app():
    app = Flask(__name__)
    app.config.from_pyfile('config.py')
    db.init_app(app)

    @app.route('/')
    def index():
        ...

    return app

config.py:

import os

basedir = os.path.abspath(os.path.dirname(__file__))

SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, '..', 'news_app.db')

models.py:

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class News(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.text, nullable=False)
    url = db.Column(db.text, unique=True, nullable=False)
    published = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
    text = db.Column(db.text, nullable=True)

    def __repr__(self):
        return '<News {} {}>'.format(self.title, self.url)

create_db.py:

from news_app.app import db, create_app

db.create_all(app=create_app())

0 个答案:

没有答案
相关问题