база данных Python / sql программирующий - где запустить

Ядро не компилирует себя - оно компилируется компилятором C в пространстве пользователя. В большинстве архитектур ЦП ЦП имеет многие биты в специальных регистрах, которые представляют, какие полномочия код, в настоящее время работающий, имеет. В x86 это текущие биты уровня полномочий (CPL) в сегмент кода (CS) регистр. Если биты CPL 00, код, как говорят, работает в , безопасность звонит 0 , также известный как привилегированный режим . Если биты CPL равняются 11, код, как говорят, работает в , безопасность звонит 3 , также известный как непривилегированный режим . Другие две комбинации, 01 и 10 (безопасность звонит 1 и 2 соответственно) редко используются.

правила о том, какой код может и не может сделать в непривилегированном режиме по сравнению с привилегированным режимом, являются скорее сложными, но являются достаточными для высказывания, непривилегированный режим сильно уменьшил полномочия.

Теперь, когда люди говорят о ядре операционной системы, они обращаются к частям кода ОС, которые добираются для выполнения в привилегированном режиме с поднятыми полномочиями. Обычно авторы ядра пытаются сохранить ядро как можно меньше из соображений безопасности, так, чтобы код, для которого не нужны дополнительные полномочия, не имел их.

компилятор C является одним примером такой программы - этому не нужны дополнительные полномочия, предлагаемые привилегированным режимом, таким образом, это работает в непривилегированном режиме, как большинство других программ.

В случае Linux, ядро состоит из двух частей: исходный код ядра и скомпилированный исполняемый файл ядра. Любая машина с компилятором C может скомпилировать ядро от исходного кода в двухуровневое изображение. Вопрос, затем, состоит в том, что сделать с тем двухуровневым изображением.

при установке Linux в новой системе Вы устанавливаете предварительно скомпилированное двухуровневое изображение, обычно от любого физические среды (такие как DVD CD) или из сети. BIOS загрузится (двухуровневое изображение) загрузчик ядра от медиа или сети, и затем загрузчик установит (двухуровневое изображение) ядро на Ваш жесткий диск. Затем когда Вы перезагружаете, BIOS загружает загрузчик ядра из Вашего жесткого диска, и загрузчик загружает ядро в память, и Вы являетесь выключенными и рабочими.

, Если Вы хотите к , перекомпилировали Ваше собственное ядро, это немного более хитро, но оно может быть сделано.

7
задан Ayman 12 September 2009 в 06:25
поделиться

8 ответов

Это совокупность ответов без определенного порядка:

Все рекомендуют уровень ORM. Что имеет смысл, если вам действительно нужна база данных. Ну, это вроде как запрошено в заголовке: -)

  1. SQLAlchemy
  2. Осень
  3. Django ORM
  4. Использовать официальную поддержку SQLite Pysqlite
  5. Storm
  6. Эликсир
  7. Просто используйте Собственный Pickle Python

Но я начинаю думать, что если достаточно базы данных в памяти, она будет использоваться только в сценариях, а не в веб-приложении или даже в графическом интерфейсе рабочего стола, тогда вариант 7 также вполне допустим, при условии, что поддержка транзакций не требуется и целостность "базы данных" не является проблемой.

1
ответ дан 6 December 2019 в 14:06
поделиться

I highly recommend the use of a good ORM. When you can work with Python objects to manage your database rows, life is so much easier.

I am a fan of the ORM in Django. But that was already recommended and you said that is too heavyweight.

This leaves me with exactly one ORM to recommend: Autumn. Very lightweight, works great with SQLite. If your embedded application will be multithreaded, then you absolutely want Autumn; it has extensions to support multithreaded SQLite. (Full disclosure: I wrote those extensions and contributed them. I wrote them while working for RealNetworks, and my bosses permitted me to donate them, so a public thank-you to RealNetworks.)

Autumn is written in pure Python. For SQLite, it uses the Python official SQLite module to do the actual SQL stuff. The memory footprint of Autumn itself is tiny.

I do not recommend APSW. In my humble opinion, it doesn't really do very much to help you; it just provides a way to execute SQL statements, and leaves you to master the SQL way of doing things. Also, it supports every single feature of SQLite, even the ones you rarely use, and as a result it actually has a larger memory footprint than Autumn, while not being as easy to use.

6
ответ дан 6 December 2019 в 14:06
поделиться

Я начал здесь:

http://www.devshed.com/c/a/Python/Using-SQLite-in-Python

Это 5 (короткие) страницы с мне сразу же помогло только самое необходимое.

3
ответ дан 6 December 2019 в 14:06
поделиться

What you're looking for is SQLAlchemy, which is fast becoming the de facto standard Python data access layer. To make your first experiences with SQLAlchemy even easier, check out Elixir, which is a thin ActiveRecord-style wrapper around SQLAlchemy.

Update: Reread the question and saw the bit about not needing a full ORM. I'd still suggest going the SQLAlchemy route, just because it gives you a ridiculously easy way to work with databases in Python that you can reuse for any kind of database. Time spent working directly with SQLite is wasted once you need to connect to Oracle or something.

3
ответ дан 6 December 2019 в 14:06
поделиться

начните с Django

http://www.djangoproject.com/

ORM - это то, что вам нужно. Вы не пожалеете. Учебник здесь http://docs.djangoproject.com/en/dev/intro/tutorial01/ довольно мягкий.

Почему Django / ORM? Django запустит вас примерно через полчаса, будет управлять соединениями с базой данных, интерфейсами управления данными и т. Д. Django работает с SQLLite: вам не нужно управлять экземпляром MySQL / PostGre.

EDIT1: вы не делаете ' Для этого не нужно использовать часть Django для веб-приложений. Вы можете использовать классы db.Model для непосредственного управления вашими данными. Какое бы автономное приложение / скрипт вы ни придумали, вы можете просто использовать уровень модели данных Django. И когда вы решите, что вам нужен веб-интерфейс,

2
ответ дан 6 December 2019 в 14:06
поделиться

Django идеально подходит для этого, но на плакате неясно, действительно ли ему нужно создавать скомпилированный EXE или веб-приложение. Django предназначен только для веб-приложений.

Я не уверен, откуда у вас действительно «тяжелая работа». Django значительно меньше по объему строк кода, чем любой другой крупный фреймворк для веб-приложений.

0
ответ дан 6 December 2019 в 14:06
поделиться

Еще один вариант, который можно добавить к другим хорошим предложениям: Эликсир . Он обеспечивает упрощенный декларативный уровень поверх SQLAlchemy , поэтому в него должно быть легче погрузиться, но он также позволяет использовать всю мощь SQLAlchemy , если и когда вам нужно это.

0
ответ дан 6 December 2019 в 14:06
поделиться

Существует простой в использовании модуль Python, который отвечает всем заявленным целям:

http://yserial.sourceforge.net/

Сериализация + постоянство: сжатие и аннотирование Python в несколько строк кода объекты в SQLite; а затем извлекать их в хронологическом порядке по ключевым словам без SQL. Самый полезный «стандартный» модуль для базы данных для хранения данных без схемы.

Удивительно, но для большинства практических целей нет большой разницы между решениями в памяти и постоянными.

Что касается «защиты меня от реальной базы данных». "с y_serial даже нельзя сказать, что за всем этим стоит SQLite. Если вы строите свои записи как словари Python, вы можете сосредоточиться только на написании кода (а не хранимых процедур).

0
ответ дан 6 December 2019 в 14:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: