Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите найти ошибку в библиотеке sqlite3

Максим Ёлочка Знаток (492), на голосовании 10 месяцев назад
import sqlite3 #модуль sqlite
import discord #модуль discord api
from discord.ext import commands #необходимый класс для обработки команд
from tabulate import tabulate #удобный модуль для рисования таблиц
import json #используется только для обработки инвентаря, но ему можно найти и другое применение

conn = sqlite3.connect("Discord.db") # или :memory:
cursor = conn.cursor()

CREATE TABLE "shop" ("id" INT, "type" TEXT, "name" TEXT, "cost" INT)

CREATE TABLE "users" ("id" INT, "nickname" TEXT, "mention" TEXT, "money" INT, "rep_rank" TEXT, "inventory" TEXT, "lvl" INT, "xp" INT)


Выскакивает ошибка при запуске по типу invalid syntax. Perhaps you forgot a comma?
Голосование за лучший ответ
Матвей Фролов Мыслитель (6603) 11 месяцев назад
ChatGPT говорит,что в данном коде отсутствуют операторы "execute" для выполнения запросов на создание таблиц.
Матвей ФроловМыслитель (6603) 11 месяцев назад
После создания курсора необходимо вызвать метод execute для выполнения запросов SQL на создание таблиц:

conn = sqlite3.connect("Discord.db") # или :memory:
cursor = conn.cursor()

cursor.execute('CREATE TABLE "shop" ("id" INT, "type" TEXT, "name" TEXT, "cost" INT)')
cursor.execute('CREATE TABLE "users" ("id" INT, "nickname" TEXT, "mention" TEXT, "money" INT, "rep_rank" TEXT, "inventory" TEXT, "lvl" INT, "xp" INT)')
Матвей ФроловМыслитель (6603) 11 месяцев назад
Также, если таблицы уже существуют в базе данных, то перед выполнением команд создания таблиц необходимо проверить на их наличие:

conn = sqlite3.connect("Discord.db") # или :memory:
cursor = conn.cursor()

cursor.execute('''
CREATE TABLE IF NOT EXISTS "shop" (
"id" INT,
"type" TEXT,
"name" TEXT,
"cost" INT
)
''')

cursor.execute('''
CREATE TABLE IF NOT EXISTS "users" (
"id" INT,
"nickname" TEXT,
"mention" TEXT,
"money" INT,
"rep_rank" TEXT,
"inventory" TEXT,
"lvl" INT,
"xp" INT
)
''')
АНАНАС Гуру (2775) 11 месяцев назад
Ошибка в этой библиотеке SQLite3 не связана со синтаксисом самой библиотеки, а скорее всего вызвана отсутствием команды для выполнения SQL-запросов.

Для исправления этой ошибки вам необходимо написать SQL-запросы для создания таблиц в базе данных перед тем, как использовать курсор для выполнения операций в базе данных. Например:

conn = sqlite3.connect('Discord.db')
cursor = conn.cursor()

create_shop_table = "CREATE TABLE shop (id INT, type TEXT, name TEXT, cost INT)"
cursor.execute(create_shop_table)

create_users_table = "CREATE TABLE users (id INT, nickname TEXT, mention TEXT, money INT, rep_rank TEXT, inventory TEXT, lvl INT, xp INT)"
cursor.execute(create_users_table)

После того, как вы создадите таблицы в базе данных SQLite, вы сможете использовать курсор для выполнения операций SELECT, INSERT, UPDATE и DELETE над данными в этих таблицах.
Похожие вопросы