У меня возникли некоторые проблемы с тем, чтобы создать cog с веткой переписывания discordpy в python.
Я пытаюсь создать команду для подключения к базе данных с помощью коннектора mysql и созданияпростой стол.Проблема в том, что когда я определяю переменную курсора, как указано в официальных документах mysql, я получаю ошибку: «локальная переменная« cnx »ссылается перед присваиванием»
Теперь это код:
import discord
from discord.ext import commands
import json
import asyncio
import mysql.connector
from mysql.connector import errorcode
with open("config.json") as configfile:
config = json.load(configfile)
class testcog:
def __init__(self, client):
self.client = client
@commands.command()
async def dbconnect(self, ctx):
await ctx.message.author.send('I\'m connecting to the database, please be patient.')
try:
cnx = mysql.connector.connect(user=config['sqlconfig']['user'], password=config['sqlconfig']['password'],
host=config['sqlconfig']['host'],
database=config['sqlconfig']['database'])
except mysql.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("Something is wrong with your user name or password")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
print("Database does not exist")
else:
print(err)
else:
cnx.close()
cursor = cnx.cursor()
TABLES = {}
TABLES['employee'] = (
"CREATE TABLE `employee` ("
" `emp_no` int(11) NOT NULL AUTO_INCREMENT,"
" `birth_date` date NOT NULL,"
" `first_name` varchar(14) NOT NULL,"
" `last_name` varchar(16) NOT NULL,"
" `gender` enum('M','F') NOT NULL,"
" `hire_date` date NOT NULL,"
" PRIMARY KEY (`emp_no`)"
") ENGINE=InnoDB")
for table_name in TABLES:
table_description = TABLES[table_name]
try:
print("Creating table {}: ".format(table_name), end='')
cursor.execute(table_description)
except mysql.connector.Error as err:
if err.errno == errorcode.ER_TABLE_EXISTS_ERROR:
print("already exists.")
else:
print(err.msg)
else:
print("OK")
cursor.close()
cnx.close()
def setup(client):
client.add_cog(testcog(client))
Таблица и код для ее создания были скопированы непосредственно из официальных документов.Часть кода, которая дает мне ошибку: cursor = cnx.cursor()
непосредственно перед созданием словаря TABLES
.
Я не понимаю, что я делаю неправильно, помощь очень ценится.