Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Python3 и Sqlite3  (Прочитано 1650 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн hippi90

  • Автор темы
  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Python3 и Sqlite3
« : 06 Апреля 2011, 16:26:11 »
Есть база данных Sqlite и скрипт на Python3, который этой базой управляет. В скрипте есть функция, которая создает новую таблицу в базе по шаблону, в качестве аргументов принимает имя базы и имя новой таблицы:
def create_new_table_in_db(db, table):
conn = sqlite3.connect(db)
cur = conn.cursor()

cur.execute('''DROP TABLE IF EXISTS ?''', (table,))
        ...
При выполнении выдает ошибку на последней строке:
cur.execute('''DROP TABLE IF EXISTS ?''', (table,))
sqlite3.OperationalError: near "?": syntax error
Писал вроде по документации http://docs.python.org/py3k/library/sqlite3.html?highlight=sqlite#sqlite3

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Python3 и Sqlite3
« Ответ #1 : 06 Апреля 2011, 16:37:59 »
Не в курсе, как sqlite, но чтобы создать-удалять таблицу в mysql требуются по умолчанию права администратора БД. И это правильно, т.к. структуру БД надо создавать на этапе проектирования, а не эксплуатации.
« Последнее редактирование: 06 Апреля 2011, 16:39:48 от alexander.pronin »

Оффлайн hippi90

  • Автор темы
  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Re: Python3 и Sqlite3
« Ответ #2 : 06 Апреля 2011, 16:52:07 »
Sqlite - это библиотека, реализующая БД, никакой клиент-северной архитектуры, база хранится в одном файле. Так или иначе, но создавать базу надо, используя API библиотеки.

Оффлайн Мангуст

  • Любитель
  • *
  • Сообщений: 98
    • Просмотр профиля
Re: Python3 и Sqlite3
« Ответ #3 : 07 Апреля 2011, 06:31:04 »
Вроде дело в том, что имя таблицы нельзя использовать в качестве параметра - нужно строку создавать обычным способом. В документации сказано: "The SQL statement may be parametrized (i. e. placeholders instead of SQL literals)", то бишь имя таблицы к литералам не относится.

 

Страница сгенерирована за 0.036 секунд. Запросов: 25.