さて、長いこと放置していたはてなダイアリーの方ですが、まとめ書きした方がいいものは、やっぱりこちらに書くということで。AndroidでSQLiteを使うケースは多々あると思いますが、明言されていない注意点があるので忘備録がてら。SQLiteDatabase#closeは明示で呼ぶな、Cursor#closeは明示で呼べ これはSQLiteの作りの話ですが、SQLiteではマルチスレッドに対してコネクションオープンからクローズまでは保障する、という作りになっています。 要はコネクション単位でスレッドセーフですよ、ということ。AndroidでSQLiteを使って検索系の処理をするのに、いわゆるWebアプリ的な作りで考えると、更新系処理ではCUD処理のあとにSQLiteDatabase#closeとしがちですが、android.database.sqlite.SQLiteException
Androidでディスクに空きがない時にSQLiteへINSERTしようとした場合の挙動を確認してみた。てか、どんな挙動するのかぐらいドキュメントに書いとけよ>Google 結果として、以下の2つのタイミングでSQLiteDiskIOExceptionが発生することが確認できた。 書き込み可能なDBを開こうとした(SQLiteDatabaseOpenHelper.getWritableDatabase()を呼んだ)タイミング。 つまりディスク容量が少ない時は書き込み可能なDBを開くことはできない。 データをコミットしようとした(SQLiteDatabase.endTransaction()を呼んだ)タイミング 明示的にトランザクションを開始していない場合は、INSERTしようとした時点で落ちると思う(試してない)。DBを開く時点ではディスクが空いてたんだけど、書き込みをする時点でディスク
県庁所在地は各都道府県に必ず1つだけ存在するので、プライマリキーを設定しています。郷土料理はいくつ存在するか分からないため、プライマリキーはありません。この2つのテーブルは都道府県でリレーションしています。 なお、郷土料理が登録されていない県がありますが、あしからずご了承ください。Androidのデータベースを作成するには? スキーマが決まったら、データベースを作成します。 データベースの作成方法はいろいろありますが、今回は「SQLiteOpenHelper」というクラスを利用します。このクラスは、abstract(抽象)クラスなので、以下のコールバックを実装する必要があります。 public void onCreate(SQLiteDatabasedb) データベースを作成したタイミングで呼び出される。通常はここでテーブルを作成する。今回はデータもこのタイミングで追加している pub

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"> <TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="[TagsDB]" /> <TextViewandroid:id="@+id/saved_text"android:layout_width="fill_parent" a
MySQLとSQLite(PrinCo.)という記事経由で、生まれ変わるPHP - Zend Engine 2、SQLiteの実力は?(MYCOMPC WEB)という記事を読んだ。MySQL とSQLite で INSERT 時の処理速度が公開されている。 1000件のレコードのINSERTを実行し、それぞれにどれぐらいの時間がかかっているかを示しているのだ。MySQLが 0.4秒、SQLite が 16秒だというのだが、これはあまりにもひどすぎる。しかも、結論としてどうやら大量データの連続挿入はSQLiteの不得意な処理のようだ。と書かれている。1000件程度でこんなにかかるんだったら、10000件だったら160秒ぐらいかかる(単純すぎ。)って事? 実はこれにはからくりがあって、SQLite の処理は トランザクション の中でないと著しく遅いのだ。おそらく、これが原因なのではない
An EXCLUSIVE lock is needed in order to write to thedatabase file. Only one EXCLUSIVE lock is allowed on the file and no other locks of any kind are allowed to coexist with an EXCLUSIVE lock. In order to maximize concurrency,SQLite works to minimize the amount of time that EXCLUSIVE locks are held. The operating system interface layer understands and tracks all five locking states described abov
ESP8266ボードにジャイロを搭載した Elecrowに出していた基板のVer.2が納品されたので早速リフローしました。 なんと今度はジャイロ搭載です! 記載の動画は、ジャイロの情報をESP8266経由でシリアルに流して、それをPCのProcessing上で動くアニメーターで受けて思うがままに追従させるデモです。 もちろん、ESP8266はWiFi SoCですから、UDPパケットにして送信したりすればシリアルラインは不要となります。また、今回のオリジナルボードにはリチウムポリマーの端子がついているので、完全ノンワイヤーで動かすことができます。 何に使うの? 今回使ったMPU-6050は、加速度とジャイロ(角速度)の2種類のセンサーと、DMPというモーションプロセッサが内蔵されたチップです。こういうユニットのことを、一般にはInertial Measurement Unit(IMU)と言っ

「PupSQLite」は、フリーで利用できる軽量データベースエンジン「SQLite」のデータベースをGUIで管理できるソフト。Windows XP/Vistaに対応する寄付歓迎のフリーソフトで、作者のWebサイトからダウンロードできる。なお、動作には.NET Framework 2.0以降が必要。本ソフトには「SQLite」のライブラリ“sqlite3.dll”が同梱されており、環境の構築作業などが必要なくそのまま利用可能。画面はMDI方式になっており、複数のデータベースをそれぞれ同時に子ウィンドウとして開くことができる。各データベース内のテーブルは、データベースのウィンドウ内にタブ切り替え型のグリッドビューとして表示される仕組み。 機能も充実しており、テーブル内データの閲覧・編集はもちろん、SQL文を発行して結果を表形式で閲覧できる機能、テーブル定義文を出力する機能、2つのテーブルを比
About This Tutorial This tutorial is forSQLAlchemy version 0.2. You may notice that some sections are marked "New in 0.2". If this is the first time you're reading this tutorial, you can safely skip those sections. On the other hand, if you read the previous version of this tutorial and are now trying to learnSQLAlchemy 0.2, thenjust search for thetext "New in 0.2" and you'll have a lot less r
SQLite性能評価その2 「SQLite性能評価その1」の続きです。SQLiteは、ファイル名を":memory:"とすると、インメモリデータベースを構築します。 このとき、前回のCase1とCase2の処理時間を測ってみました。 トランザクション明示的指定の有無による処理時間の変化(インメモリ版) 測定環境は前回と同じです。 コードは、前回のCase1とCase2の以下の部分を、sqlite3_open("testdb.sq3", &Db); 以下のように置き換えるだけです。sqlite3_open(":memory:", &Db); それぞれCase1(Memory)、Case2(Memory)と呼ぶことにします。 測定結果 測定結果は以下のようになりました。 データベースのopen、closeや、CREATE TABLEの時間は含めていません。 ほとんど差はありません。インメ
PEP 249 –PythonDatabaseAPI Specification v2.0 Author: Marc-André Lemburg <mal at lemburg.com> Discussions-To:Db-SIG list Status: Final Type: InformationalCreated: 12-Apr-1999 Post-History: Replaces: 248 Table of Contents Introduction Module Interface Constructors Globals Exceptions Connection Objects Connection methods Cursor Objects Cursor attributes Cursor methods Type Objects and Construct

PEP: 249 Title:PythonDatabaseAPI Specification v2.0 Version: $Revision: 1.1 $ Author:db-sig@python.org (PythonDatabase SIG) Editor: mal@lemburg.com (Marc-Andre Lemburg) Status: Final Type: Informational Replaces: 248 Release-Date: 07 Apr 1999 概説 このAPI は,データベースにアクセスする際に用いるPython モジュー ル間で類似性を高めるために定義されています.そうすることで,一貫性 によってモジュールがより理解しやすくなり,コードがデータベース間で 可搬性を持ち,より多くのデータベースにPython から接続できるように なると
SQLiteとはPython2.5には、標準でSQLiteという軽量データベースが含まれている。SQLiteは、JAVAでいうところのHSQLDBやApache Derbyのような感じのようである。SQLLiteはデーモンやサービスではなく、スタンドアロンでのみ動作する。(DerbyやHSQLDBは組み込みモードとサーバーモードの両方をもつが。) また、データベースのストアもディスク上の単一ファイルになる。Windowsでいうところの、ACCESS95〜2000で使われていた、JETデータベースエンジンのMDBファイルのような感じであろうか。 要するに単なるライブラリである。 ライセンスは、なんとパブリックドメイン(著作権放棄)である。 そのため、Pythonに限らず、C/C++、Perl、PHPなどに広く組み込まれている。Python2.4まではアドオンとして別途インストールす
sqlite3 —DB-API 2.0 interface forSQLitedatabases¶ Source code: Lib/sqlite3/SQLite is a C library that provides a lightweight disk-baseddatabase that doesn’t require a separate server process and allows accessing thedatabase using a nonstandard variant of theSQL query language. Some applications can useSQLite for internal data storage.It’s also possible to prototype an application using SQ

軽量・高速なデータベースSQLiteをPythonから扱うためのライブラリ。 インストールPython2.5から標準ライブラリに入りました。 インストール作業は不要です。 使用方法sqlite3をインポートする #!python2.6 # -*- coding:utf-8 -*- importsqlite3 データベースを作成する con =sqlite3.connect("data.db") ファイルがすでに存在するときはファイルを開く。 ファイルがないときは新しいデータベースを作成する。 isolation_levelにNoneを指定すると、自動コミットモードになります。 con =sqlite3.connect('temp.db', isolation_level=None) 特別な名前である ":memory:" を使うとRAM上にデータベースを作ることもできます。 c
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く