Уведомления

Группа в Telegram: @pythonsu

#1 Май 15, 2009 06:19:08

Добрый
От:
Зарегистрирован: 2009-04-16
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

БД для работы с большим объёмом данных

if __name__ == ‘__main__’:
import sys
main(sys.argv, ‘sqlite:///converted.db’)
2j2a: Выдаёт ошибку: имя “main” не определено. Вот такой текст:
======
Traceback (most recent call last):
File “C:\1\5.py”, line 137, in <module>
main(sys.argv, ‘sqlite:///converted.db’)
NameError: name ‘main’ is not defined
======
Хотелось бы понять, что означает последняя строка.



Офлайн

#2 Май 15, 2009 06:35:52

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

БД для работы с большим объёмом данных

Добрый
2j2a: Выдаёт ошибку: имя “main” не определено. Вот такой текст:
Ага, мой косяк. Смотри сейчас.


Добрый
Хотелось бы понять, что означает последняя строка.
# код ниже выполняется только если модуль запущен как скрипт
# см . http://docs.python.org/library/__main__.html
if __name__ == '__main__':
# импорт модуля sys
import sys
# вызов функции dbf2sa с двумя аргументами:
# 1. -- аргумент переданный скрипту в командной строке
# 2. -- sqlalchemy-путь к БД, в данном случае -- converted.db в текущей дире
dbf2sa(sys.argv[1], 'sqlite:///converted.db')
Да, забыл сказать – запускать dbf2sa.py path/to/dbf, если вдруг не понятно из кода ;)



Офлайн

#3 Май 15, 2009 07:19:51

Добрый
От:
Зарегистрирован: 2009-04-16
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

БД для работы с большим объёмом данных

Ура заработало! Юрий большое спасибо, теперь буду разбираться с sqlite и sqlalchemy.



Офлайн

#4 Май 15, 2009 14:51:01

balu
От:
Зарегистрирован: 2006-05-24
Сообщения: 521
Репутация: +  0  -
Профиль   Отправить e-mail  

БД для работы с большим объёмом данных

Добрый
Мало где на предприятиях используют Ubuntu.
Убунтами линух как-то не ограничивается… Есть и BSD и Солярки. По крайней мере в средней накрученности конторах я видел разное.
Добрый
Установка действительно не сложная, но хотелось бы сделать всё одной программой
Огнептица таки с самого начала умеет embeded.
Lexander
Поделись впечатлениями подробнее, плз.
Насчет Оракела - это 10-ка Express Edition, правда не самый удачный билд основные ограничения - 1 гиг памяти, 1 проц. и, что хуже, 4 гига пространства за все про все. Зато очень удобная админка с возможностью расширения. Очень быстр и компактен (насколько это вообще можно говорить о СУБД такого уровня) с отличными дефолтными параметрами настройки. Гоняли и под вендой и под линухом. Показал себя лучше на линухе. Для линуха есть deb и rpm сборки. Поставляется в виде юникодной и не юникодной сборки. Так что, если используете кодировку cp1251 то надо брать неюникодную сборку. Она, к тому же, шустрей. Да, смена кодировки осуществляется так:
CONNECT / AS SYSDBA;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER DATABASE CHARACTER SET INTERNAL_USE CL8MSWIN1251;
SHUTDOWN;
STARTUP;
MSSQL - Ограничения почти те же, только ограничение на объем идет на сжему, а не на всю базу, как в оракле. Но зато гораздо тормознее, админка, ИМХО, хуже, баги при большом файле журнала и приближении к концу 4 гиг. Плюс база растет быстрее, чем у Оракла и хуже сжимается.
DB2 - знаком только с ограничениями, такие же, как и на Оракл, только без ограничений на дисковое пространство. В инете видел хорошие отзывы от англоговорящих.
Из того, что перечислил мне больше всего понравилась связка Oracle/Linux.
Добрый
Юрий большое спасибо, теперь буду разбираться с sqlite и sqlalchemy.
Настоятельно не рекомендую. sqlite - отличный для однопользовательской СУБД, типа как в файрфоксе, но не пойдет для многопользовательской работы. Алхимия - тут надо смотреть. Я, например, предпочитаю все запросы делать руками, а для этого хватает DBAPI, кроме того, если использовать файрберд то kinterbasdb умеет такое:
import kinterbasdb as k
con = k.connnect(.......)
cursor = con.cursor()
cyrsor.execute('select * from table where field1=? and field2=?', (1, 2))
for record in cursor.fetcallmap(): print record["YOUR_FIELD"]



Отредактировано (Май 15, 2009 15:00:36)

Офлайн

#5 Май 15, 2009 15:36:35

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

БД для работы с большим объёмом данных

balu
Алхимия - тут надо смотреть. Я, например, предпочитаю все запросы делать руками, а для этого хватает DBAPI
А ты код смотрел? Слабо такое же на raw sql и db api сделать? Потом сравним читабельность и объем кода.



Офлайн

#6 Май 15, 2009 15:59:12

balu
От:
Зарегистрирован: 2006-05-24
Сообщения: 521
Репутация: +  0  -
Профиль   Отправить e-mail  

БД для работы с большим объёмом данных

j2a
А ты код смотрел?
И код смотрел и использовать пробовал. И не только алхимию.
j2a
Слабо такое же на raw sql и db api сделать?
Смотря где, смотря для чего, смотря какой sql. Где-то, конечно, удобнее. А где-то и не очень, а где-то да ну его… Но у меня ситуация, когда лучше raw sql.
j2a
Потом сравним читабельность и объем кода.
Результат зависит от кучи всего. А можно и нагрузку на СУБД тоже сравнить.
О переносимости даже разговора вести не хочу.



Отредактировано (Май 15, 2009 16:03:39)

Офлайн

#7 Май 15, 2009 16:03:03

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

БД для работы с большим объёмом данных

balu
.
j2a
Слабо такое же на raw sql и db api сделать?
<…что-то-было-что-balu-уже-перезаписал…>
На SA откат к DB API прозрачный. К примеру, вьюхи средствами SA не создашь, права не раздашь. А у меня при импорте данных из dbf и то и другое делать надо. Так данные “запихиваются” примерно как в примере выше, а post-load-action – raw sql.



Отредактировано (Май 15, 2009 16:17:02)

Офлайн

#8 Май 15, 2009 16:06:27

balu
От:
Зарегистрирован: 2006-05-24
Сообщения: 521
Репутация: +  0  -
Профиль   Отправить e-mail  

БД для работы с большим объёмом данных

j2a
На SA откат к DB API прозрачный.
Да, я знаю. Но тогда остальная прослойка не больно нужна. Я, кстати, свой мессадж, на который ты отвечал, обновил



Отредактировано (Май 15, 2009 16:09:20)

Офлайн

#9 Май 15, 2009 16:15:19

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

БД для работы с большим объёмом данных

balu
Да, я знаю. Но тогда остальная прослойка не больно нужна
Из-за использования SQL в одной функции не использовать SA во всех остальных ;)

Таки да, “зависит от кучи всего” и серебряной пули на все случаи жизни нету.



Офлайн

#10 Май 15, 2009 16:17:04

balu
От:
Зарегистрирован: 2006-05-24
Сообщения: 521
Репутация: +  0  -
Профиль   Отправить e-mail  

БД для работы с большим объёмом данных

j2a
Из-за использования SQL в одной функции не использовать SA во всех остальных
У меня таких функций, на основной задаче, процентов 90 как минимум.



Отредактировано (Май 15, 2009 16:18:37)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version