Вы можете использовать .tobytes
:
>>> from array import array
>>> arr = array('b', [-20, -107, -124, -21, -123, -107])
>>> arr.tobytes()
b'\xec\x95\x84\xeb\x85\x95'
А для str
вы просто декодируете байты:
>>> arr.tobytes().decode()
'아녕'
AFAIK база данных SQLITE является просто файлом. Чтобы проверить, существует ли база данных, проверьте на существование файла.
при открытии базы данных SQLITE, она автоматически создаст тот, если файл, который создает резервную копию ее, не будет существовать.
, При попытке открыть файл как sqlite3 базу данных, которая НЕ является базой данных, Вы получите это:
"sqlite3. DatabaseError: файл шифруется или не является базой данных"
так проверка, чтобы видеть, существует ли файл, и также удостоверьтесь, что попытались поймать исключение в случае, если файл не является sqlite3 базой данных
import sqlite3
import os
database_name = "newdb.db"
if not os.path.isfile(database_name):
print "the database already exist"
db_connection = sqlite3.connect(database_name)
db_cursor = db_connection.cursor()
try:
db_cursor.execute('CREATE TABLE TEST (a INTEGER);')
except sqlite3.OperationalError, msg:
print msg
SQLite автоматически создает файл базы данных в первый раз, когда Вы пытаетесь использовать его. SQL-операторы для того, чтобы составить таблицы могут использовать IF NOT EXISTS
, чтобы заставить команды только вступить в силу, если таблица не была составлена Таким образом, Вы не должны проверять на существование базы данных заранее: SQLite может заботиться об этом для Вас.
главное, по поводу которого я был бы все еще взволнован, состоит в том, что выполнение CREATE TABLE IF EXISTS
для каждой веб-транзакции (говорит), было бы неэффективно; можно избежать, чтобы при наличии программы сохранили переменную (в оперативной памяти), говорящую, создало ли это базу данных сегодня, таким образом, это работает CREATE TABLE
сценарий однажды на выполнение. Это все еще позволило бы, чтобы Вы удалили базу данных и запустились во время отладки.
Как @diciu указанный, файл базы данных будет создан sqlite3.connect. Если Вы хотите принять специальные меры, когда файл не там, необходимо будет явно проверить на существование:
import os
import sqlite3
if not os.path.exists(mydb_path):
#create new DB, create table stocks
con = sqlite3.connect(mydb_path)
con.execute('''create table stocks
(date text, trans text, symbol text, qty real, price real)''')
else:
#use existing DB
con = sqlite3.connect(mydb_path)
...
Не делайте это более сложным, чем это должно быть. Большие, независимые базы данных имеют сложную установку и требования конфигурации. SQLite является просто файлом, к которому Вы получаете доступ с SQL, это намного более просто.
Делают следующее.
Добавляют таблицу к Вашей базе данных для "Компонентов" или "Версий" или "Конфигурации" или "Выпуска" или чего-то административного как этот.
ПЕРЕСМОТР CREATE TABLE (СИМВОЛ RELEASE_NUMBER (20));
В Вашем приложении, соединяйтесь со своей базой данных обычно.
Да, я уничтожал проблему. Все, что я должен был сделать, было проверить на файл и поймать IOError, если он не существовал.
спасибо за все другие ответы. Они могут пригодиться в будущем.
Выполнение в SQL в целом ужасно на любом языке, который я взял. SQLalchemy показал, чтобы быть самым легким от них использовать, потому что фактический запрос и фиксирующий с ним является настолько чистым и отсутствует в проблемах.
Вот некоторые основные шаги при фактическом использовании sqlalchemy в Вашем приложении, лучшие детали могут быть найдены из документации.
После создания сессии, можно фиксировать и запросить от базы данных.
См. Это решение на SourceForge, которое раскрывает ваш вопрос в учебной манере с поучительным исходным кодом:
y_serial.py module :: хранилище объектов Python с SQLite
«Сериализация + постоянство :: в несколько строк кода, сжимайте и аннотируйте объекты Python в SQLite, а затем извлекайте их в хронологическом порядке по ключевым словам без какого-либо SQL. Самый полезный «стандартный» модуль для базы данных для хранения данных без схемы »