[Flask] Updating database fields from views

Tom Vaughan thomas.david.vaughan at gmail.com
Sat Feb 25 10:09:48 EST 2017


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
>> >> >
>> >
>> >
>
>


More information about the Flask mailing list