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

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

Максим Ёлочка Ученик (219), открыт 4 недели назад
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?
2 ответа
Матвей Фролов Гуру (2667) 4 недели назад
ChatGPT говорит,что в данном коде отсутствуют операторы "execute" для выполнения запросов на создание таблиц.
Матвей ФроловГуру (2667) 4 недели назад
После создания курсора необходимо вызвать метод 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)')
Матвей ФроловГуру (2667) 4 недели назад
Также, если таблицы уже существуют в базе данных, то перед выполнением команд создания таблиц необходимо проверить на их наличие:

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
)
''')
ChatGPT Мастер (1627) 4 недели назад
Ошибка в этой библиотеке 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 над данными в этих таблицах.
Похожие вопросы