Alchemy Flask error in Python

1

I've been doing the tutorial link to learn Python but I have not managed to get the import to sqlalchemy generating the following error:

  

$ python app.py Traceback (most recent call last): File "app.py", line   2, in from flask_sqlalchemy import SQLAlchemy File   "C: \ Python27 \ lib \ site-packages \ flask_sqlalchemy__init __. Py", line 23,   in import sqlalchemy File "C: \ projects \ testFlask \ sqlalchemy.py", line   2, in from flask_sqlalchemy import SQLAlchemy ImportError: can not   import name SQLAlchemy

Another project tells me No module named flask_sqlalchemy

My code is as follows:

    from flask import Flask, request, flash, url_for, redirect, render_template
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///students.sqlite3'
app.config['SECRET_KEY'] = "random string"

db = SQLAlchemy(app)

class students(db.Model):
   id = db.Column('student_id', db.Integer, primary_key = True)
   name = db.Column(db.String(100))
   city = db.Column(db.String(50))
   addr = db.Column(db.String(200)) 
   pin = db.Column(db.String(10))

def __init__(self, name, city, addr,pin):
   self.name = name
   self.city = city
   self.addr = addr
   self.pin = pin

@app.route('/')
def show_all():
   return render_template('show_all.html', students = students.query.all() )

@app.route('/new', methods = ['GET', 'POST'])
def new():
   if request.method == 'POST':
      if not request.form['name'] or not request.form['city'] or not request.form['addr']:
         flash('Please enter all the fields', 'error')
      else:
         student = students(request.form['name'], request.form['city'],
            request.form['addr'], request.form['pin'])

         db.session.add(student)
         db.session.commit()
         flash('Record was successfully added')
         return redirect(url_for('show_all'))
   return render_template('new.html')

if __name__ == '__main__':
   db.create_all()
   app.run(debug = True)

I put the ply show of sqlalchemy by suggestion

$ pip show SQLAlchemy
Name: SQLAlchemy
Version: 1.1.6
Summary: Database Abstraction Library
Home-page: http://www.sqlalchemy.org
Author: Mike Bayer
Author-email: [email protected]
License: MIT License
Location: c:\python27\lib\site-packages
Requires:
    
asked by Miguel Acevedo 06.03.2017 в 19:38
source

2 answers

1

Your problem seems to be that you do not have Flask-SQLAlchemy installed, that's why you get the error when trying to import SQLAlchemy in this line:

from flask_sqlalchemy import SQLAlchemy

Simply install the package from your console using pip:

$ sudo pip install flask-sqlalchemy
Collecting flask-sqlalchemy
  Downloading Flask_SQLAlchemy-2.2-py2.py3-none-any.whl
Collecting SQLAlchemy>=0.8.0 (from flask-sqlalchemy)
  Downloading SQLAlchemy-1.1.6.tar.gz (5.2MB)
    100% |████████████████████████████████| 5.2MB 151kB/s 
Collecting Flask>=0.10 (from flask-sqlalchemy)
  Downloading Flask-0.12-py2.py3-none-any.whl (82kB)
    100% |████████████████████████████████| 92kB 2.0MB/s 
Collecting click>=2.0 (from Flask>=0.10->flask-sqlalchemy)
  Downloading click-6.7-py2.py3-none-any.whl (71kB)
    100% |████████████████████████████████| 71kB 3.6MB/s 
Collecting Werkzeug>=0.7 (from Flask>=0.10->flask-sqlalchemy)
  Downloading Werkzeug-0.11.15-py2.py3-none-any.whl (307kB)
    100% |████████████████████████████████| 317kB 1.4MB/s 
Collecting itsdangerous>=0.21 (from Flask>=0.10->flask-sqlalchemy)
  Downloading itsdangerous-0.24.tar.gz (46kB)
    100% |████████████████████████████████| 51kB 1.8MB/s 
Collecting Jinja2>=2.4 (from Flask>=0.10->flask-sqlalchemy)
  Downloading Jinja2-2.9.5-py2.py3-none-any.whl (340kB)
    100% |████████████████████████████████| 348kB 3.3MB/s 

As you can see, the installation is responsible for installing its own dependencies (including the same SQLAlchemy).

    
answered by 09.03.2017 в 23:01
0

The problem turned out to be that I had it installed but not in the project. It's enough to include the library within the project, thanks to everyone.

    
answered by 10.03.2017 в 19:15