傀儡師の館.Python

傀儡師の館.Python

PR

×

Calendar

Keyword Search

▼キーワード検索

Archives

2026.07
2026.06
2026.05
2026.04
2026.03
2026.02
2026.01
2025.12
2025.11
2025.10

Profile

kugutsushi

kugutsushi

Free Space

設定されていません。
2003.02.27
XML
カテゴリ: ことばの処理
2003年4月7日、鉄腕アトムの誕生日にはどれくらい、それにちなんだ催しが開かれるのだろう。いろんな会社がこれにあわせてロボットの展示や発表をするんだろうか。前にも書いたかもしれないが、やっぱりロボット産業は、日本の21世紀を担う産業になるだろうな。でもって、ロボットがたくさんの人の職を奪うことも事実。数百万円で買えるロボットであれば、人間を雇うよりよいよね、という職業がたくさんあるから。

実際のところ人型でないロボットというのは、いたるところにあるわけだし。自動販売機みたいなものから、自動券売機、自動改札機、駐車場のゲートなんか、昔は人がやっていたようなものが、どんどんロボットに置き換わっている。工場だってそうだし。おもしろいのは、自動化されているようで自動化されず人がやっていることもたくさんあることかな。オートメーション化されて作られていると思えるようなものが、実は人間がやっていたりとか。今のところ、同じことをするのであれば、人間の方がはるかに柔軟性に富み、また、コスト的に安いというものがたくさんあるが、ロボットが高機能で柔軟になり、価格が下がったときには、いろんな仕事が人間からロボットにまた置き換わっていくだろう。

そうすると、だんだんと単純労働ができなくなってしまう。これは、単純労働に向いている人にとってはつらいことだ。そうすると、職業をもっと多様化していかなければならないわけだけど、まだ、十分な多様化した職業がない。だいたい職自体が足りないのだから・・・。スーパーのレジなんかは、200年たたないうちに、人間からロボットに変わるんじゃないだろうか(というか、一種のセルフで済むようになる)。

そうすると、ますます広い意味での娯楽産業を発展させていかないとならないだろう。大学なんかも、一種の娯楽産業に位置づけてもいいだろう。知的生産レベルの娯楽から、無為の娯楽まで、幅広い娯楽が必要とされるし、また貧富の差がよけいに広がっていくから、なんとか金持ちが喜んで浪費する仕組みも作らないといけない(笑)。金持ちから搾取せよと。税金ではなく楽しく使って頂けるようにね。

○ 記憶と再生その9 (Pythonで人工無能)

一昨日、Python の簡易 RDBMS である Gadfly をインストールしたが、一つ忘れていたことがある。gadfly-1.0.0\kjbuckets に Windows 用のバイナリが入っていた。ということで 2.2 の下にある kjbuckets.pyd を C:\python22jp\lib\site-packages に放り込む。これで kjbukets が C で書かれたものを使うようになるので高速化される。ちなみに、pyd の拡張子がついたものは、python 用にコンパイルされた C や C++ などで書かれてコンパイルされた拡張モジュール。端的に言えば、DLL 。で、とりあえず、準備ができたので、ちょっと使い始めてみることにする。ちなみに ここに日本語訳があった

一般には実用性がないと言われる Gadfly だが、最新のバージョンは、新しく書き直されたもので、限られた用途で使用する分には実用に耐えるようなものになっているのではないかと思う(これから試してみないとわからないけどね)。 a simple in-memory SQL implementation like Gadfly may be useful for serious work. と書かれている。このトーンが昔に比べて変わっているのだ。昔は、どちらかといえば、実験的な実装だから本格的に使うには別の RDBMS を使ってねというトーンがもっと強かったような気がする。



で、python を起動したら、次のようにしてみる。


# とりあえず、 DB を C:\\GadflyDB というディレクトリに
# 保存することにする。もし、このディレクトリが存在しない
# 場合には、ディレクトリを作成し、作成できない場合は
# 終了することにする。
DBDataDir = "C:\\GadflyDB"
import os
if not os.path.isdir(DBDataDir):
  try:
   os.mkdir(DBDataDir)
  except:

   os.exit

# Gadfly を使えるようにモジュールをインポートする。
import gadfly

# Gadfly への接続用にオブジェクトを作成し、
# connection という変数に代入する。


# DBDIR (C:\GadflyDB)にある
# TestDic というデータベースの使用を開始する。
# もし、存在しない場合は、勝手に新規に作成される。
connection.startup("testdic", DBDataDir)

# カーソルオブジェクトを作成し、
# cursor という変数に代入する。
cursor = connection.cursor()

# test という名前の table を作成(create)する。
# フィールドは、id (整数型の id と、可変長文字列(varchar) の name
cursor.execute("create table TEST (id integer, name varchar)")

# test テーブルにデータを挿入(insert)する
# 挿入するフィールドは、id と name で、値はそれぞれ 1 と ’テスト’
print "(1, ’test1’) と (2, ’test2’) を挿入します。"
cursor.execute("insert into TEST (id, name) values (1, ’test1’)")
cursor.execute("insert into TEST (id, name) values (2, ’test2’)")

# test テーブルにあるデータをすべて選択する(select)
cursor.execute("select * from TEST")

# cursor が示しているポイントから、
# データをすべて取り出して(fetchall)、
# 変数 x に代入してすべての取り出した行に対して操作を行う。
print "\n挿入後に取り出したデータ"
for x in cursor.fetchall():
# つまり、その行(x) を表示する。
print x

# この接続で実行された操作をコミットする。
# 操作結果を実際に DB に反映するには commit しなければならない。
#
print "\nトランザクションをコミットします。"
connection.commit()

# 今度は、id が 1 のレコード(つまり、今挿入した行) を更新する。
# 変更後の name には ’変更済み’ という値を設定する。
print "\n id が 1 の行を ’changed’ に変更します。"
cursor.execute("update TEST set name=’changed’ where id = 1")

# test テーブルにあるデータをすべて選択する
cursor.execute("select * from TEST")

# cursor が示しているポイントから、
# データをすべて取り出して(fetchall)、
# 変数 x に代入してすべての取り出した行に対して操作を行う。
print "\n変更後に取り出したデータ"
for x in cursor.fetchall():
print x

# カーソルの内容を表示する
print "\nカーソルの内容"
print cursor.pp()

# トランザクションがちゃんとサポートしているところが
# ポイントなのだ。いったんテーブルに操作を加えたあと
# でもコミット(捜査結果を反映させる)前であれば、
# 前のコミットまでさかのぼって、テーブル内容を元に
# 戻すことができる。すばらしい。本格的なのだ。
connection.rollback()
print "\nトランザクションを中断して、前にコミットした時点に戻ります。"

# test テーブルにあるデータをすべて選択する
cursor.execute("select * from TEST")

# カーソルの内容を表示する
print "\nカーソルの内容"
print cursor.pp()

connection.close()
print "\nデータベースを閉じます"


どうやら一応、使えるみたいな感じだな。出力結果は次のようになる。





挿入後に取り出したデータ
(’0001’, ’test1’)
(’0002’, ’test2’)

トランザクションをコミットします。

id が 1 の行を ’changed’ に変更します。

変更後に取り出したデータ
(’0001’, ’test1’)
(’0002’, ’test2’)

カーソルの内容
ID | NAME
============
0001 | test1
0002 | test2

トランザクションを中断して、前にコミットした時点に戻ります。

カーソルの内容
ID | NAME
============
0001 | test1
0002 | test2

データベースを閉じます






お気に入りの記事を「いいね!」で応援しよう

Last updated  2006.09.11 23:46:55
コメントを書く


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
X
Design a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: