SQLAlchemy & Postgresql

Buddy Peacock buddy.peacock at gmail.com
Thu May 28 16:23:27 EDT 2020


Yes, after commenting out all flask related lines and then running the
print, I do see all the authors.

Al (Buddy) Peacock, PMP, MCCT,  ITILv3, SMC, CSM, SPOC
(920) 740-3411
linkedin.com/in/buddypeacock <https://www.linkedin.com/in/buddypeacock/>




On Thu, May 28, 2020 at 3:48 PM Abdur-Rahmaan Janhangeer <
arj.python at gmail.com> wrote:

> You tried
>
> for isbn, title, author, year in reader:
>
> without flask, do you actually see a value for author?
>
>
>
> Like using a normal print
>
> Kind Regards,
>
>
> Abdur-Rahmaan Janhangeer
>
> https://www.github.com/Abdur-RahmaanJ
>
> Mauritius
>
> sent from gmail client on Android, that's why the signature is so ugly.
>
> On Thu, 28 May 2020, 23:31 Buddy Peacock, <buddy.peacock at gmail.com> wrote:
>
>> Thanks for your response Abdur-Rahmaan,
>>
>> The tables already exist and I have tried both  "name = author" and "name
>> = :author"
>>
>> Regards,
>>
>> Al (Buddy) Peacock, PMP, MCCT,  ITILv3, SMC, CSM, SPOC
>> (920) 740-3411
>> linkedin.com/in/buddypeacock <https://www.linkedin.com/in/buddypeacock/>
>>
>>
>>
>>
>> On Thu, May 28, 2020 at 2:44 PM Abdur-Rahmaan Janhangeer <
>> arj.python at gmail.com> wrote:
>>
>>> Well,
>>>
>>>
>>> See
>>>
>>> for isbn, title, author, year in reader:
>>>         if db.execute("SELECT * FROM authors WHERE name = :author",
>>> {"name": author}).rowcount == 0:
>>>             db.execute("INSERT INTO authors (name) VALUES (author)")
>>>
>>> but i don't see any code for creating the authors table
>>>
>>> also did you mean "name = author" instead of "name = :author"
>>>
>>> 3rd thing is that since you are using SQLALchemy, you should not be
>>> using
>>> pure SQL
>>>
>>> What i mean by models is something like this:
>>> https://github.com/Abdur-rahmaanJ/shopyo/blob/dev/shopyo/modules/product/models.py
>>>
>>> where you define code and your table is created the link uses
>>> flask-sqlalchemy but pure sqlalchemy should
>>> be somewhat similar
>>>
>>> 4th thing: when using
>>>
>>> for isbn, title, author, year in reader:
>>>
>>> without flask, do you actually see a value for author?
>>>
>>> Kind Regards,
>>>
>>> Abdur-Rahmaan Janhangeer
>>> compileralchemy <https://compileralchemy.github.io/> | blog
>>> <https://abdur-rahmaanj.github.io/>
>>> github <https://github.com/Abdur-RahmaanJ>
>>> Mauritius
>>>
>>>
>>> On Thu, May 28, 2020 at 10:31 PM Buddy Peacock <buddy.peacock at gmail.com>
>>> wrote:
>>>
>>>> I'm not sure what you mean by models?  Am I missing something in my
>>>> environment perhaps?
>>>>
>>>> Al (Buddy) Peacock, PMP, MCCT,  ITILv3, SMC, CSM, SPOC
>>>> (920) 740-3411
>>>> linkedin.com/in/buddypeacock
>>>> <https://www.linkedin.com/in/buddypeacock/>
>>>>
>>>>
>>>>
>>>>
>>>> On Thu, May 28, 2020 at 2:26 PM Abdur-Rahmaan Janhangeer <
>>>> arj.python at gmail.com> wrote:
>>>>
>>>>> Greetings,
>>>>>
>>>>>
>>>>> where did you define your models?
>>>>>
>>>>> Kind Regards,
>>>>>
>>>>>
>>>>> Abdur-Rahmaan Janhangeer
>>>>>
>>>>> https://www.github.com/Abdur-RahmaanJ
>>>>>
>>>>> Mauritius
>>>>>
>>>>> sent from gmail client on Android, that's why the signature is so ugly.
>>>>>
>>>>> On Thu, 28 May 2020, 22:22 Buddy Peacock, <buddy.peacock at gmail.com>
>>>>> wrote:
>>>>>
>>>>>> Hello group,
>>>>>> I have a pretty good background in MySQL & MSSQL as well as VB & Php,
>>>>>> but I
>>>>>> am new to Python and Postgresql.
>>>>>>
>>>>>> I am taking a class and working on a project to insert authors and
>>>>>> books
>>>>>> into a table.  My code for this is:
>>>>>> ===============================================================
>>>>>> import csv
>>>>>> import os
>>>>>>
>>>>>> from flask import Flask
>>>>>> from sqlalchemy import create_engine
>>>>>> from sqlalchemy.orm import scoped_session, sessionmaker
>>>>>>
>>>>>> app = Flask(__name__)
>>>>>>
>>>>>> # Configure session to use filesystem
>>>>>> app.config["SESSION_PERMANENT"] = False
>>>>>> app.config["SESSION_TYPE"] = "filesystem"
>>>>>> # Session(app)
>>>>>>
>>>>>> # Set up database
>>>>>> engine = create_engine(os.getenv("DATABASE_URL"))
>>>>>> db = scoped_session(sessionmaker(bind=engine))
>>>>>>
>>>>>> print (os.getenv("DATABASE_URL"))
>>>>>>
>>>>>> def main():
>>>>>>     f = open("books.csv")
>>>>>>     reader = csv.reader(f)
>>>>>>     for isbn, title, author, year in reader:
>>>>>>         if db.execute("SELECT * FROM authors WHERE name = :author",
>>>>>> {"name": author}).rowcount == 0:
>>>>>>             db.execute("INSERT INTO authors (name) VALUES (author)")
>>>>>>
>>>>>>         print(f" {author} was read.")
>>>>>>     db.commit()
>>>>>>
>>>>>> if __name__ == "__main__":
>>>>>>     main()
>>>>>> ====================================================================
>>>>>> If I comment out the "if" statement then the authors all print on
>>>>>> screen.
>>>>>> But when I run this with the if statement I am getting a message that
>>>>>> says:
>>>>>> ssqlalchemy.exc.StatementError: (sqlalchemy.exc.InvalidRequestError) A
>>>>>> value is required for bind parameter 'author'
>>>>>> [SQL: SELECT * FROM authors WHERE name = %(author)s]
>>>>>> [parameters: [{'name': 'author'}]]
>>>>>>
>>>>>> What am I missing?
>>>>>>
>>>>>>
>>>>>> Al (Buddy) Peacock, PMP, MCCT,  ITILv3, SMC, CSM, SPOC
>>>>>> (920) 740-3411
>>>>>> linkedin.com/in/buddypeacock <
>>>>>> https://www.linkedin.com/in/buddypeacock/>
>>>>>> --
>>>>>> https://mail.python.org/mailman/listinfo/python-list
>>>>>>
>>>>>


More information about the Python-list mailing list