I am working on using mysql.connector in a class and have found an example of 
how to create a single connection that spans the lifetime of all instances of 
the class:

https://softwareengineering.stackexchange.com/a/358061/317228 

however, I do not understand a few things about the class, including

1. Why it is subclassed as an object: `class Postgres(object):` ? I thought 
classes were necessarily objects.
2. Why is this portion of code directly addressing the class, instead of using 
the `cls` reference variable?
connection = Postgres._instance.connection = psycopg2.connect(**db_config)
cursor = Postgres._instance.cursor = connection.cursor()
3. And is it me or does anyone else think {anydb}.connector’s usage is messy 
and inelegant? Ex:
print('connecting to PostgreSQL database...')
connection = Postgres._instance.connection = psycopg2.connect(**db_config)
cursor = Postgres._instance.cursor = connection.cursor()
cursor.execute('SELECT VERSION()')
db_version = cursor.fetchone()
        Why can’t we associate the focus of the connection with the connection 
itself, instead of creating a separate cursor object?

Also, within the code example, and in Python in general, why does there needs 
to be a __new__ constructor when there’s an __init__ constructor? I’ve read 
about the usage of singletons. It seems you could create singletons within  
__init__ or __new__ . Any enlightenment would be really helpful. I am very 
sleep-deprived, so I’m sorry if this seems like a dumb question.

I have read the official docs. Have also been reading “Python 3: Patterns, 
Recipes, and Idioms”. The first was mildly helpful but I still don’t see the 
benefit of a __new__ constructor.
Why is there dislike for Metaclasses?

Thanks, and I’ll have better incisive questions in the future.

Sent from Mail for Windows 10

-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to