Omro
Дек. 30, 2008 11:15:23
Очень хороша эта бд, действительно удобна. Но вот вопрос - есть ли исходники какого-либо sqlite - менеджера, написанного на питоне? Я не понимаю, как делать подстановки переменных в случае например если хочется Create table сделать со своим названием.
Думаю, ещё возникнут мелкие вопросы, так-что именно мини менеджер бд подошёл-бы, дабы расковырять. Интуит читал, руководство тоже, но как делать insert table со своим значением не понял :-)
Заранее спасибо!!!
slav0nic
Дек. 30, 2008 12:01:58
sqlitebrowser есть
или
https://addons.mozilla.org/en-US/firefox/addon/5817а вообще есть куча примеров, посмотри например тесты для sqlite
что такое “create table со своими названиями” не осилил
Omro
Дек. 30, 2008 12:16:08
Create table с названием-переменной уже осилил. XD Эту тузлу для ФФ использовал уже, очень удобно что лис и таким оброс…
Стоит что-нибудь спросить, как попадается самому нужный док. А перед этим несколько часов поиска XD
Всё равно спасибо!
Omro
Дек. 30, 2008 15:06:09
Стоп, опять я что-то сглупил.
c.execute(u'INSERT INTO "main".%s ("begin") VALUES (%s)'%(st, sl))
Почему здесь не срабатывает юникод-строка?
slav0nic
Дек. 30, 2008 19:24:03
во-первых некошерно юзать форматирование строк в SQL запросах, это прихоти РНР пhограммистов))
там где % запятую надо ставить
и покажи как задаётся st и sl
Omro
Янв. 1, 2009 19:30:58
Обычные строки unicode:
st = u"Строка"
sl = u"Слово"
Например эти.
Хорошо, если некошерно. Как тогда тогда кошерно вбивать переменные в sql-запрос?)
Omro
Обычные строки unicode:
st = u"Строка"
sl = u"Слово"
Например эти.
Вот работающий пример. Результат выводится по-русски.
# -*- coding: utf-8 -*-
import sqlite3
conn = sqlite3.connect(“:memory:”)
conn.execute(“create table test(field1, field2)”)
conn.execute(“insert into test(field1, field2) values(?,?)”, (u'тест один', u'тест два'))
field1, field2 = conn.execute(“select * from test”).fetchone()
print field1, field2
Хорошо, если некошерно. Как тогда тогда кошерно вбивать переменные в sql-запрос?)
Читайте здесь:
http://docs.python.org/library/sqlite3.htmlТам почти в самом начале. Можете поискать по фразе ‘SQL injection attack’
Omro
Янв. 1, 2009 22:42:12
Базу данных изначально продумано организовать на множество таблиц (называемых динамически) в ней.
А как быть с:
conn.execute("create table ?(?, ?)", ("test", "field1", "field2"))
Код гораздо чище, спасибо! Про инъекции sql-кода ясно, но прога для хорошего друга, ему самому себе некуда вводить sql - инъекцию, да и в висте легче сныкать сам файл)))
pyJee
Янв. 2, 2009 06:56:46
про sqlite можно почитать, например в доках питона :)
http://docs.python.org/library/sqlite3.html
Omro
Янв. 2, 2009 10:40:26
Спасибо, в этой теме уже советовали эту ссылку. Ну да, не всё быстро схватываю, но есть и хуже=D
Я просто спросил, знает ли кто конкретный пример как поправить.
БД нужно строит динамически, в этом и идея.
Но за скобкой вопрос, потом в скобке питон усилено игнорит. :/