chhibbz
chhibbz

Reputation: 480

Pythonanywhere giving MySQL connection error even without time delay

I am trying to connect to my pythonanywhere DB from a local python file, using the following code.

import MySQLdb, sshtunnel
sshtunnel.SSH_TIMEOUT = 5.0
sshtunnel.TUNNEL_TIMEOUT = 5.0

queryAdd = ("INSERT INTO `****$geo***`.O***"
               "(name, address) "
               "VALUES (%s, %s)")

with sshtunnel.SSHTunnelForwarder(
    ('ssh.pythonanywhere.com'),
    ssh_username='*******', ssh_password='*******',
    remote_bind_address=('*****.mysql.pythonanywhere-services.com', 3306)
) as tunnel:
    connection = MySQLdb.connect(
        user='******',
        passwd='********',
        host='127.0.0.1', port=tunnel.local_bind_port,
        db='****$geo******',
        )

cursor = connection.cursor()    

for row in dl:
    tup=(row['name'],row['address'])
    cursor.execute(queryAdd, tup)
    connection.commit()

However, as soon as the code is run, I get the following error:

MySQLdb._exceptions.OperationalError: (2013, 'Lost connection to MySQL server during query')

There is no delay between creating the connection and running the query. What am I doing wrong?

Upvotes: 0

Views: 162

Answers (1)

Filip
Filip

Reputation: 676

You need to do everything inside your with block as the tunnel is gone when you go outside of the context.

Upvotes: 0

Related Questions