NameError: имя 'курсор' не определено - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь подключиться mysql и изменить информацию, но это не работает.

main.py

import pymysql

def connect_setting():
    # Trying to connect
    db_connection = None
    try:
        db_connection = pymysql.connect(
        user='db', 
        passwd='password', 
        host='127.0.0.1', 
        db='test', 
        charset='utf8'
        )
       # If connection is not successful
    except:
        print("Can't connect to database")
        return 0
    # If Connection Is Successful
        print("Connected")

    # Making Cursor Object For Query Execution
        global cursor
        cursor = db_connection.cursor()


def get_off():

    sql = '''INSERT INTO `-100`'''

    cursor.execute(sql)
    db_connection.commit()

index.py

from main import get_off as sql

sql()

ошибка

raceback (most recent call last):
  File "/workspace/Kakao_points/index.py", line 3, in <module>
    sql()
  File "/workspace/Kakao_points/main.py", line 30, in get_off
    cursor.execute(sql)
NameError: name 'cursor' is not defined

Я уже определил курсор, но почему-то python не получил информацию в следующем определении, я думаю ... кто-нибудь, пожалуйста, помогите ..?

1 Ответ

1 голос
/ 16 марта 2020

Вы устанавливаете cursor только в случае сбоя соединения, потому что вы помещаете эти строки в блок except:. Эти две строки должны быть в блоке try:.

Вам также нужно сделать глобальным db_connection, чтобы использовать его в другой функции.

def connect_setting():
    global db_connection
    # Trying to connect
    db_connection = None
    try:
        db_connection = pymysql.connect(
        user='db', 
        passwd='password', 
        host='127.0.0.1', 
        db='test', 
        charset='utf8'
        )

        # Making Cursor Object For Query Execution
        global cursor
        cursor = db_connection.cursor()
        # If Connection Is Successful
        print("Connected")
    # If connection is not successful
    except:
        print("Can't connect to database")
        return 0
...