нужна проверка и добавление базы данных sqlite для ведения домашнего хозяйства и управления кодом

Все,

Обновление: на основе результата и ответа Google я добавил дополнительные подсказки, которые еще не закончены.

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

Ниже кода перечислены еще 10 шагов в качестве рабочих заданий, и большинство из них поступает из WEB, я сомневаюсь, что кто-то с опытом может проверить и заполнить недостающую часть для него. И если кто-то знает, как это сделать в SQLAlchemy, не могли бы вы также поделиться им с PLS?

1. тестирование, если существующий файл базы данных

import sqlite3 import os database_name = "newdb.db" if not os.path.isfile(database_name): print "the database already exist" # connect to to db, refer #2 db_connection = sqlite3.connect(database_name) db_cursor = db_connection.cursor() 

2. тестирование, если файл базы данных является допустимым форматом sqlite3

  http://stackoverflow.com/questions/1516508/sqlite3-in-python >>> c.execute("SELECT * FROM tbl") Traceback (most recent call last): File "<stdin>", line 1, in <module> sqlite3.DatabaseError: file is encrypted or is not a database =========sqlalchemy way =============== http://www.mail-archive.com/sqlalchemy@googlegroups.com/msg20860.html import os, os.path as osp try: from pysqlite2 import dbapi2 as sqlite except: import sqlite3 as sqlite def isSQLite(filename): """True if filename is a SQLite database File is database if: (1) file exists, (2) length is non-zero, (3) can connect, (4) has sqlite_master table """ # validate file exists if not osp.isfile(filename): return False # is not an empty file if not os.stat(filename).st_size: return False # can open a connection try: conn = sqlite.connect(filename) except: return False # has sqlite_master try: result = conn.execute('pragma table_info(sqlite_master)').fetchall() if len(result) == 0: conn.close() return False except: conn.close() return False # looks like a good database conn.close() return True 

3. Проверить таблицу

 c=conn.cursor() if table_name in [row for row in c.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='table_name';")] 

Файл базы данных 4.backup на диске

 http://stuvel.eu/archive/55/safely-copy-a-sqlite-database import shutil, os, sqlite3 if not os.path.isdir ( backupdir ): raise Exception backupfile = os.path.join ( backupdir, os.path.basename(dbfile) + time.strftime(".%Y%m%d-%H%M") ) db = sqlite3.connect ( dbfile ) cur = db.cursor () cur.execute ( 'begin immediate' ) shutil.copyfile ( dbfile, backupfile ) cur.execute ( 'rollback' ) =========or======== http://github.com/husio/python-sqlite3-backup =========or======== http://docs.python.org/release/2.6/library/sqlite3.html#sqlite3.Connection.iterdump 

5. таблица резервного копирования – в том же файле базы данных

  c=conn.cursor() c.execute("CREATE TABLE demo_backup AS SELECT * FROM demo;") 

6. переименовать таблицу

 c.execute("ALTER TABLE foo RENAME TO bar;") 

7. Скопируйте таблицу в / из другой базы данных:

 Thanks, MPelletier Connect to one database db_connection = sqlite3.connect(database_file) Attach the second database db_connection.execute("ATTACH database_file2 AS database_name2") Insert from one to the other: db_connection.execute("INSERT INTO FooTable SELECT * FROM database_name2.FooTable") ==========or============ db_connection.execute("INSERT INTO database_name2.FooTable SELECT * FROM FooTable") ========sqlalchemy way====== http://www.mail-archive.com/sqlalchemy@googlegroups.com/msg11563.html def duplicateToDisk(self, file): '''Tohle ulozi databazi, ktera byla pouze v pameti, na disk''' cur = self.connection() import os if os.path.exists(file): os.remove(file) cur.execute("attach %s as extern" % file) self.checkTable('extern.dictionary') cur.execute("insert into extern.dictionary select * from dictionary") cur.execute("detach extern") self.commit() 

8 тестовая база данных заблокирована или нет?

  #possible? try: c = sqlite.connect(database_name, timeout=0) c.commit() except OperationalError # OperationalError: database is locked 

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

 c = sqlite.connect(database_name, timeout=30.0) # default 5sec 

10 заставляет все подключения к базе данных выпускать / фиксировать AKA для освобождения всей блокировки?

  refer #12 

11. многопоточность в использовании sqlite в python:

 http://code.activestate.com/recipes/526618/ http://www.yeraze.com/2009/01/python-sqlite-multiple-threads/ 

12 получить связь с SQLAlchemy?

  #from FAQ #try to reuse the connection pool from SQLAlchemy engine = create_engine(...) conn = engine.connect() #****1 conn.connection.<do DBAPI things> cursor = conn.connection.cursor(<DBAPI specific arguments..>) ===or ==== can out of pool's manage conn = engine.connect() conn.detach() # detaches the DBAPI connection from the connection pool conn.connection.<go nuts> conn.close() # connection is closed for real, the pool replaces it with a new connect ========and not sure if this works =========== #from sqlalchemy document #http://www.sqlalchemy.org/docs/reference/sqlalchemy/pooling.html?highlight=connection%20pool import sqlalchemy.pool as pool import sqlite3 as sqlite3 conn_proxy = pool.manage(sqlite3) # then connect normally connection = conn_proxy.connect(...) ===================================================================== #****1 : what is #****1 on above code invoked =_=!! A engine.raw_connection() = A pool.unique_connection() = A _ConnectionFairy(self).checkout() = A return _ConnectionFairy <== cls = _connection_record.get_connection() = _ConnectionRecord.connection = return a pool.creator **which is a callable function that returns a DB-API connection object** 

Спасибо за ваше время!

Rgs, KC

One Solution collect form web for “нужна проверка и добавление базы данных sqlite для ведения домашнего хозяйства и управления кодом”

Чтобы скопировать данные в / из другой базы данных, общий подход SQLite:

  1. Подключение к одной базе данных

     db_connection = sqlite3.connect(database_file) 
  2. Прикрепите вторую базу данных

     db_connection.execute("ATTACH database_file2 AS database_name2") 
  3. Вставка от одного к другому:

     db_connection.execute("INSERT INTO FooTable SELECT * FROM database_name2.FooTable") 

    или

     db_connection.execute("INSERT INTO database_name2.FooTable SELECT * FROM FooTable") 
  • sqlite - python Получить CURRENT_TIMESTAMP как объект datetime
  • Присоединение к модулю sqlite Pythons выполняется медленнее, чем вручную
  • sqlite3: выберите верхние n записей в столбце
  • Преобразование полей даты и времени в хронологическом файле Chrome (sqlite) в читаемый формат
  • sqlite3.OperationalError: рядом с «?»: синтаксическая ошибка
  • Скомпилируйте Python 3.4 с помощью sqlite3
  • Python Sqlite3: INSERT INTO table VALUE (словарь идет здесь)
  • Sqlite3, OperationalError: невозможно открыть файл базы данных
  • Python - лучший язык программирования в мире.