[Flask] Updating database fields from views

Anonymous Coder anonymouscodar at gmail.com
Sat Feb 25 10:50:01 EST 2017


Tried everything once again from previous practices but now after removing
the line it says:

AttributeError: 'dict' object has no attribute 'session'

On Sat, Feb 25, 2017 at 3:09 PM, Tom Vaughan <thomas.david.vaughan at gmail.com
> wrote:

> On Sat, Feb 25, 2017 at 12:07 PM, Anonymous Coder
> <anonymouscodar at gmail.com> wrote:
> > You mean I should delete following line?
> >
> > db='db'
>
> Yes.
>
>
> >
> > On Sat, Feb 25, 2017 at 2:41 PM, Tom Vaughan
> > <thomas.david.vaughan at gmail.com> wrote:
> >>
> >> On Sat, Feb 25, 2017 at 11:35 AM, Anonymous Coder
> >> <anonymouscodar at gmail.com> wrote:
> >> > I think I found it. I really am sorry that I was not clearly lay down
> >> > source
> >> > code reflecting the issue and thanks for the patience. In __init__
> file
> >> > the
> >> > previous developer has something like below:
> >> >
> >> > #File1
> >> > login_manager = LoginManager()
> >> > login_manager.init_app(app)
> >> >
> >> > db = {
> >> >     'users': {
> >> >         "test": ("test", "test")
> >> >     },
> >> >     'session': {}
> >> > }
> >> > app.config['DEBUG'] = True
> >> > app.config['WTF_CSRF_ENABLED'] = False
> >> > app.secret_key =
> >> > '\x06\x94\xcf\xaf\xaeB&\xd1s\xa8ZGU\xd2J\xf3\xd6\x12(\xbd\
> xf5\xc3\x858'
> >> >
> >> > db = 'db'
> >>
> >> ^^^ Delete this line completely.
> >>
> >>
> >> >
> >> > Then in another file he declared the database like below:
> >> >
> >> > #File 2
> >> > import os
> >> > import oursql
> >> > from flask import Flask
> >> >
> >> > app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://'+ 'root' \
> >> > + ':' + 'test123'+'@'\
> >> > + 'localhost' + '/students'
> >> > db = SQLAlchemy(app)
> >> > def get_connection():
> >> >     return oursql.connect(host='localhost', port='3306',
> >> >                           user='root',
> >> >                           passwd='test123', db='students')
> >> >
> >> > Now when I need to create any model and need to add tables I do this
> in
> >> > shell:
> >> >
> >> > from file2 import db
> >> > from somemodelfile import MyNewModel
> >> > db.create_all()
> >> >
> >> > That is how it adds tables. But still I am confuse that why it is not
> >> > letting me update fields.
> >> >
> >> > Except above code there is no representation of data related to how db
> >> > needs
> >> > to be handled. All the file inside project call database from file1
> but
> >> > in
> >> > shell I can't use create_db(). When in shell I do like below:
> >> >
> >> >>>>from file1 import db
> >> >>>>db
> >> > 'db' #This is the output
> >> >
> >> >
> >> >
> >> > On Sat, Feb 25, 2017 at 1:50 PM, Tom Vaughan
> >> > <thomas.david.vaughan at gmail.com> wrote:
> >> >>
> >> >> But how exactly is it imported? Where is it assigned a value? The
> >> >> problem seems to be that db is not an instance of a Database object,
> >> >> but rather it has been assigned a string. For example:
> >> >>
> >> >> $ python3
> >> >> Python 3.5.2 (default, Nov 17 2016, 17:05:23)
> >> >> [GCC 5.4.0 20160609] on linux
> >> >> Type "help", "copyright", "credits" or "license" for more
> information.
> >> >> >>> db = "foobar"
> >> >> >>> db.session
> >> >> Traceback (most recent call last):
> >> >>   File "<stdin>", line 1, in <module>
> >> >> AttributeError: 'str' object has no attribute 'session'
> >> >>
> >> >>
> >> >>
> >> >> On Sat, Feb 25, 2017 at 9:40 AM, Anonymous Coder
> >> >> <anonymouscodar at gmail.com> wrote:
> >> >> > It is imported from another file.
> >> >> >
> >> >> > On Sat, Feb 25, 2017 at 11:51 AM, Gergely Polonkai
> >> >> > <gergely at polonkai.eu>
> >> >> > wrote:
> >> >> >>
> >> >> >> The error message you showed us most probably references the db
> >> >> >> variable.
> >> >> >> Is db a global variable in the same file? Or is it imported from
> >> >> >> another
> >> >> >> module? Can you check its value?
> >> >> >>
> >> >> >>
> >> >> >> On Sat, Feb 25, 2017, 12:46 Anonymous Coder
> >> >> >> <anonymouscodar at gmail.com>
> >> >> >> wrote:
> >> >> >>>
> >> >> >>> Just a clarity that the stackoverflow post has nothing to do with
> >> >> >>> the
> >> >> >>> question. That problem I got solved. I just gave the reference to
> >> >> >>> show
> >> >> >>> you
> >> >> >>> how my models are defined.
> >> >> >>> Thanks
> >> >> >>>
> >> >> >>>
> >> >> >>> On Sat, Feb 25, 2017 at 10:26 AM, Anonymous Coder
> >> >> >>> <anonymouscodar at gmail.com> wrote:
> >> >> >>>>
> >> >> >>>> I am having trouble understanding how to manipulate database in
> >> >> >>>> Flask
> >> >> >>>> from views. Rest of topics I was able to cover pretty quickly in
> >> >> >>>> Flask. I am
> >> >> >>>> a new user so help is much appreciated.
> >> >> >>>>
> >> >> >>>> Following is the link for details guys from one of my post at
> >> >> >>>> stackoverflow. Thank a lot for help guys.
> >> >> >>>>
> >> >> >>>>
> >> >> >>>>
> >> >> >>>>
> >> >> >>>> http://stackoverflow.com/questions/42451870/flask-
> error-typeerror-incompatible-collection-type-str-is-not-
> list-like/42452448?noredirect=1#comment72048738_42452448
> >> >> >>>>
> >> >> >>>>
> >> >> >>>>
> >> >> >>>> On Sat, Feb 25, 2017 at 8:43 AM, Gergely Polonkai
> >> >> >>>> <gergely at polonkai.eu>
> >> >> >>>> wrote:
> >> >> >>>>>
> >> >> >>>>> Where does your db variable come from?
> >> >> >>>>>
> >> >> >>>>>
> >> >> >>>>> On Sat, Feb 25, 2017, 08:36 Anonymous Coder
> >> >> >>>>> <anonymouscodar at gmail.com>
> >> >> >>>>> wrote:
> >> >> >>>>>>
> >> >> >>>>>> I am having trouble with updating database tables from flask
> >> >> >>>>>> view.
> >> >> >>>>>> Following is the view:
> >> >> >>>>>>
> >> >> >>>>>> @app.route('/yearlychargedrec', methods=['GET', 'POST'])
> >> >> >>>>>> def yearly_charged_rec():
> >> >> >>>>>>
> >> >> >>>>>>     if not user_authorized():
> >> >> >>>>>>         return redirect('/')
> >> >> >>>>>>     # customer
> >> >> >>>>>>     if request.method == 'POST':
> >> >> >>>>>>         stripe_token = request.form['stripeToken']
> >> >> >>>>>>         email = request.form['stripeEmail']
> >> >> >>>>>>
> >> >> >>>>>>         customer = stripe.Customer.create(
> >> >> >>>>>>             email=email,
> >> >> >>>>>>             source=request.form['stripeToken']
> >> >> >>>>>>         )
> >> >> >>>>>>         try:
> >> >> >>>>>>             subscription = stripe.Subscription.create(
> >> >> >>>>>>                 customer=customer.id,
> >> >> >>>>>>                 plan="yearlyrec",
> >> >> >>>>>>             )
> >> >> >>>>>>
> >> >> >>>>>>             package = Package(
> >> >> >>>>>>
> >> >> >>>>>>                 is_active=True,
> >> >> >>>>>>                 planname = 'yearlyrec',
> >> >> >>>>>>
> >> >> >>>>>>             )
> >> >> >>>>>>             db.session.add(package)
> >> >> >>>>>>             db.session.commit()
> >> >> >>>>>>
> >> >> >>>>>>         except stripe.error.CardError as e:
> >> >> >>>>>>             # The card has been declined
> >> >> >>>>>>             body = e.json_body
> >> >> >>>>>>             err = body['error']
> >> >> >>>>>>
> >> >> >>>>>>     return render_template('/profile/
> charge/monthlycharge.html')
> >> >> >>>>>>
> >> >> >>>>>> Error I get is:
> >> >> >>>>>>
> >> >> >>>>>> AttributeError: 'str' object has no attribute 'session'
> >> >> >>>>>>
> >> >> >>>>>> Please advise.
> >> >> >>>>>> _______________________________________________
> >> >> >>>>>> Flask mailing list
> >> >> >>>>>> Flask at python.org
> >> >> >>>>>> https://mail.python.org/mailman/listinfo/flask
> >> >> >>>>
> >> >> >>>>
> >> >> >>>
> >> >> >
> >> >> >
> >> >> > _______________________________________________
> >> >> > Flask mailing list
> >> >> > Flask at python.org
> >> >> > https://mail.python.org/mailman/listinfo/flask
> >> >> >
> >> >
> >> >
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/flask/attachments/20170225/bfb6f44d/attachment-0001.html>


More information about the Flask mailing list