我正在尝试运行实现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
答案 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