尽管使用pip进行安装,但“没有定义NameError:名称'SQLAlchemy'”

时间:2018-08-11 17:37:51

标签: python flask-sqlalchemy

我正在尝试运行实现SQLAlchemy的python脚本。但是,它输出一个错误NameError: name 'SQLAlchemy' is not defined,我用'pip install sqlalchemy'安装了SQLAlchemy,并认为我在脚本顶部正确导入了它。

from sqlalchemy import create_engine
import sqlalchemy

engine = create_engine('sqlite:////Users/Desktop/practice/database.db')
db = SQLAlchemy(engine)


class newsPosts(db.Model):

    newsSite = db.Column(db.String(128), nullable=False)
    title = db.Column(db.String(128), nullable=False)
    date = db.Column(db.String(128), nullable=False)
    url = db.Column(db.String(128), nullable=True)


def main():
    print("hello world")


if __name__ == '__main__':
    main()

这是整个错误:

Traceback (most recent call last):
  File "scrapeNews.py", line 13, in <module>
    db = SQLAlchemy(engine)
NameError: name 'SQLAlchemy' is not defined

4 个答案:

答案 0 :(得分:1)

您遇到导入错误。您导入sqlalchemy模块,但不导入SQLAlchemy类。如果该类是模块的一部分,则必须

 from sqlalchemy import SQLAlchemy

或称为

 db = sqlalchemy.SQLAlchemy(engine)

但是,我不记得模块中存在这样的类。 flask-alchemy包中存在具有该名称的类。

答案 1 :(得分:1)

从flask_sqlalchemy导入SQLAlchemy

答案 2 :(得分:0)

SQLAlchemy中没有sqlalchemy。正如其他人所写,这是在flask-sqlalchemy中进行的。

使用“ normal” SQLAlchemy定义模型的方法最好在其tutorial中显示。简而言之,定义表newsPosts的代码应为:

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, String

Base = declarative_base()

class newsPosts(Base):
    __tablename__ = 'newsPosts'  # the actual table name in DB

    newsSite = Column(String(128), nullable=False)
    title = Column(String(128), nullable=False)
    date = Column(String(128), nullable=False)
    url = Column(String(128), nullable=True)

答案 3 :(得分:0)

这是正确导入的方式

 from flask_sqlalchemy import SQLAlchemy

并且您正在虚拟环境或venv中工作,并且已经安装了sqlalchemy,则必须再次将其安装在虚拟环境中

pip install flask-sqlalchemy

上面的命令是安装sqlalchemy