21

Re: Чому не працюють запити підкажіть будьласка.

А значення self.row і self.column настільки таємні, що ви не хочете навіть написати, що вони таємні?

Подякували: 221VOLT1

22

Re: Чому не працюють запити підкажіть будьласка.

koala написав:

А значення self.row і self.column настільки таємні, що ви не хочете навіть написати, що вони таємні?

ні просто вони не такі важливі адже column(назва стовпця) це рядок(стрічка, лента, string).
self.column  це передане з викликаючої функції int (віл 1 до 9 залежить від конкретних даних користувача)
self.row це ідентифікатор локації локації(str), в конкретному випадку береться з таблиці характеристик персонажа напроти назви параметра "локація"
https://replace.org.ua/uploads/images/9084/c455984ff3f3a3d15eacbf64d6a8e12a.png

Подякували: 221VOLT1

23

Re: Чому не працюють запити підкажіть будьласка.

лєнта то німецька назва

24

Re: Чому не працюють запити підкажіть будьласка.

Тоді доведеться ще трохи уточнювати структуру таблиці location_subscribe - ви ж про неї ніц не написали, а вона у вас, як я бачу, нетривіальна. Чому запит стовпчика іде числом? Ви точно певні, що вам не доведеться колись додавати ще один стовпчик?

Подякували: leofun01, 221VOLT2

25

Re: Чому не працюють запити підкажіть будьласка.

koala написав:

Тоді доведеться ще трохи уточнювати структуру таблиці location_subscribe - ви ж про неї ніц не написали, а вона у вас, як я бачу, нетривіальна. Чому запит стовпчика іде числом? Ви точно певні, що вам не доведеться колись додавати ще один стовпчик?

locatiоn_subscribe це таблиця з описами локації. Кожна локація має описи локації але в залежності від попередніх дій гравця стан локації повинен мінятися тому я зробив таблицю

Прихований текст

(можна було і в текстових файлах зробити але  з таблицями простіше працювати)

з станами локації. Далі для кожного користувача створюється таблиця з поточним станами локацій. При переході на локацію з Таблиці поточних станів локацій дістаєм поточне значення стану локації(котра зберігається як INTEGER для лекшої обробки, то таке суб'єктивне рішення) і передаєм його
LocationDiscription як column і за допомогою нього формується назва необхідного рядка.

  class LocationDiscription():

    def __init__(self, column, row):
        self.connection = sqlite3.connect("static_tables.db")
        self.cursor = self.connection.cursor()
        self.column = column
        self.row = row

    def return_location_descript(self):
        print(self.column, self.row)
        column = "status_"+str(self.column)
        return(self.cursor.execute(f"SELECT {column}, location_id='{self.row}' FROM location_subscribe ").fetchone()[0])

Структура:

CREATE TABLE "location_subscribe" (
    "location_id"    TEXT UNIQUE,
    "name_location"    TEXT,
    "status_0"    TEXT,
    "status_1"    TEXT,
    "status_2"    TEXT,
    "status_3"    TEXT,
    "status_4"    TEXT,
    "status_6"    TEXT,
    "status_7"    TEXT,
    "status_8"    TEXT,
    "status_9"    TEXT
);
Подякували: 221VOLT1

26

Re: Чому не працюють запити підкажіть будьласка.

koala написав:

Тоді доведеться ще трохи уточнювати структуру таблиці location_subscribe - ви ж про неї ніц не написали, а вона у вас, як я бачу, нетривіальна. Чому запит стовпчика іде числом? Ви точно певні, що вам не доведеться колись додавати ще один стовпчик?

locatiоn_subscribe це таблиця з описами локації. Кожна локація має описи локації але в залежності від попередніх дій гравця стан локації повинен мінятися тому я зробив таблицю

Прихований текст

(можна було і в текстових файлах зробити але  з таблицями простіше працювати)

з станами локації. Далі для кожного користувача створюється таблиця з поточним станами локацій. При переході на локацію з Таблиці поточних станів локацій дістаєм поточне значення стану локації(котра зберігається як INTEGER для лекшої обробки, то таке суб'єктивне рішення) і передаєм його
LocationDiscription як column і за допомогою нього формується назва необхідного стовпця.

  class LocationDiscription():

    def __init__(self, column, row):
        self.connection = sqlite3.connect("static_tables.db")
        self.cursor = self.connection.cursor()
        self.column = column
        self.row = row

    def return_location_descript(self):
        print(self.column, self.row)
        column = "status_"+str(self.column)
        return(self.cursor.execute(f"SELECT {column}, location_id='{self.row}' FROM location_subscribe ").fetchone()[0])

Структура:

CREATE TABLE "location_subscribe" (
    "location_id"    TEXT UNIQUE,
    "name_location"    TEXT,
    "status_0"    TEXT,
    "status_1"    TEXT,
    "status_2"    TEXT,
    "status_3"    TEXT,
    "status_4"    TEXT,
    "status_6"    TEXT,
    "status_7"    TEXT,
    "status_8"    TEXT,
    "status_9"    TEXT
);
Подякували: 221VOLT1

27

Re: Чому не працюють запити підкажіть будьласка.

Загалом, підозрюю, що вам треба щось на кшталт

return self.cursor.execute(f"SELECT {column} FROM location_subscribe WHERE location_id =?", (self.row,)).fetchone()[0]

Другий параметр execute має бути tuple з параметрами.
Але ви щось робите неправильно з базою.

Подякували: 221VOLT, leofun012

28

Re: Чому не працюють запити підкажіть будьласка.

koala написав:

Але ви щось робите неправильно з базою.

Можете навести на думку що саме, бо мені теж так здається я не можу зрозуміти що.

Подякували: 221VOLT1

29

Re: Чому не працюють запити підкажіть будьласка.

Для цього знадобиться детальний опис того, що саме ви зберігаєте в базі.
Наприклад, у таблиці персонажів ви зберігаєте пари "параметр-значення". У персонажів унікальні набори параметрів, чи все ж є такі, що є у всіх персонажів? Може, тоді виділити для постійних параметрів окремі стовпчики?

"id" INTEGER,
"name" TEXT,
"exp" INTEGER,
"level" INTEGER, --а точно потрібні обидва?
"health" INTEGER ...

Тоді посилання на локацію (її id) можна буде зробити числом - персонаж же ніби зобов'язаний десь знаходитися, в гіршому разі можна NULL поставити.
Далі - якщо у вас є купа стовпчиків з назвами "status_0", "status_1" і т.д., то вам, схоже, потрібна окрема таблиця

location_id --TEXT чи INTEGER, що там
number INTEGER, --наприклад, 0, 1, 2, те, що після status_ бул
value TEXT --а тут те, що зберігалося в i-му статусі

Бо інакше будете додавати і додавати.

Подякували: 221VOLT, leofun012

30

Re: Чому не працюють запити підкажіть будьласка.

koala написав:

Для цього знадобиться детальний опис того, що саме ви зберігаєте в базі.
Наприклад, у таблиці персонажів ви зберігаєте пари "параметр-значення". У персонажів унікальні набори параметрів, чи все ж є такі, що є у всіх персонажів? Може, тоді виділити для постійних параметрів окремі стовпчики?

"id" INTEGER,
"name" TEXT,
"exp" INTEGER,
"level" INTEGER, --а точно потрібні обидва?
"health" INTEGER ...

Я думаю що потрібні обидва якщо еxp % 300*(level+1) == 0  то level+=1. Можна зберігати лише exp і зробити щоб функція то рахувала кожнго разу (доречі вона ще навіть не написана) але я боюсь що зачну губитись в тім всім.

koala написав:

Далі - якщо у вас є купа стовпчиків з назвами "status_0", "status_1" і т.д., то вам, схоже, потрібна окрема таблиця

То власне і є та окрема таблиця а стовпчик location_name доданий щоб самому якось в тім орієнтуваьтся.

Подякували: 221VOLT1

31

Re: Чому не працюють запити підкажіть будьласка.

якщо боїшся розгубитися, пиши ооп

32

Re: Чому не працюють запити підкажіть будьласка.

ur_naz написав:

якщо боїшся розгубитися, пиши ооп

ооп не значить що я не розгублюсь.  :)  :)  :)

33

Re: Чому не працюють запити підкажіть будьласка.

ur_naz написав:

якщо боїшся розгубитися, пиши ооп

Не дуже вдала порада стосовно організації БД.
Тут, радше, треба ER-діаграму намалювати. І хоча б 1НФ і 2НФ прочитати і засвоїти.

34

Re: Чому не працюють запити підкажіть будьласка.

koala написав:

І хоча б 1НФ і 2НФ прочитати і засвоїти.

Вибачаюсь  вот из 1НФ і 2НФ.

35

Re: Чому не працюють запити підкажіть будьласка.

https://uk.wikipedia.org/wiki/Перша_нормальна_форма
https://uk.wikipedia.org/wiki/Друга_нормальна_форма

Подякували: plusxx, 221VOLT2

36

Re: Чому не працюють запити підкажіть будьласка.

koala написав:

Білодід також відправляв у застаріле "зайві" слова, яких не було в російській мові, щоб уможливити переклади 1:1.
Ну і ви ж не ту сторінку Вікі дивитеся: https://uk.wikipedia.org/wiki/Рядок_(програмування)

Чудово, посилання на сучасні джерела, які можуть спиратися на Білодіда, саму Вікіпедію, локалізаторські фантазії з форуму «Домівки» і т.д. Покажіть мені стрічку тексту, яка існувала до Білодіда й не була білодідівською. Як на мене, Білодід тут сам підвищив випадково вжиту кальку до рівня ніби-то поширеного архаїзму, а наші сучасники його справу продовжили.

37

Re: Чому не працюють запити підкажіть будьласка.

P.Y. написав:

Як на мене, Білодід тут сам підвищив випадково вжиту кальку до рівня ніби-то поширеного архаїзму, а наші сучасники його справу продовжили.

Білодід цього не робив, бо взагалі не розглядав того сенсу, про який ми говоримо.

Подякували: leofun011

38 Востаннє редагувалося Torbins (12.01.2020 18:44:22)

Re: Чому не працюють запити підкажіть будьласка.

pluszz написав:

ні просто вони не такі важливі адже column(назва стовпця) це рядок(стрічка, лента, string).
self.column  це передане з викликаючої функції int (віл 1 до 9 залежить від конкретних даних користувача)
self.row це ідентифікатор локації локації(str), в конкретному випадку береться з таблиці характеристик персонажа напроти назви параметра "локація"
https://replace.org.ua/uploads/images/9084/c455984ff3f3a3d15eacbf64d6a8e12a.png

А я уже знаю, звідки у вас була помилка "sqlite3.OperationalError: no such column: a1x1". Зізнайтеся чесно, ви ж без дебагера працюєте?

39

Re: Чому не працюють запити підкажіть будьласка.

koala написав:
P.Y. написав:

Як на мене, Білодід тут сам підвищив випадково вжиту кальку до рівня ніби-то поширеного архаїзму, а наші сучасники його справу продовжили.

Білодід цього не робив, бо взагалі не розглядав того сенсу, про який ми говоримо.

Той сенс, про який ми говоримо, має спиратись на історичні зразки. Бо якщо ми беремо, наприклад, гарне українське слово «мотузка» і починаємо його використовувати, наприклад, у значенні «модуль», то це нонсенс — навіть попри те, що слово «мотузка» справді є в українських словниках і навіть має на слух віддалену схожість з іншомовним словом «модуль». Добре, колись у минулому не було комп'ютерів — проте, слова та літери вже були, існували друкарські й мовознавчі терміни. Саме від них слід відштовхуватись, а не брати випадкові слова зі словника й чіпляти їм випадкові значення з голови.

40

Re: Чому не працюють запити підкажіть будьласка.

Torbins написав:
pluszz написав:

ні просто вони не такі важливі адже column(назва стовпця) це рядок(стрічка, лента, string).
self.column  це передане з викликаючої функції int (віл 1 до 9 залежить від конкретних даних користувача)
self.row це ідентифікатор локації локації(str), в конкретному випадку береться з таблиці характеристик персонажа напроти назви параметра "локація"
https://replace.org.ua/uploads/images/9084/c455984ff3f3a3d15eacbf64d6a8e12a.png

А я уже знаю, звідки у вас була помилка "sqlite3.OperationalError: no such column: a1x1". Зізнайтеся чесно, ви ж без дебагера працюєте?

Чесно установив PyCharm не поперло текстовий редактор + командний рядок.