開発環境
- OS X El Capitan - Apple (OS)
- Emacs (Text Editor)
- Python 3.5 (プログラミング言語)
入門 Python 3 (Bill Lubanovic (著)、 斎藤 康毅(監修)、 長尾 高弘 (翻訳)、オライリージャパン)の8章(データの行き先)、8.7(復習問題)を取り組んでみる。
コード(Emacs)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
print('8-1')
test1 = 'This is a test of the emergency text system'
filename = 'text.txt'
with open(filename, 'w') as f:
print(test1, file=f, end='')
print('8-2')
with open(filename) as f:
test2 = f.read()
print(test1 == test2)
print('8-3')
filename = 'books.csv'
s = '''author,book
J R R Tolkien,The Hobbit
Lynne Truss, "Eats, Shoots & Leaves"'''
with open(filename, 'w') as f:
print(s, file=f, end='')
print('8-4')
import csv
with open(filename) as f:
dict_reader = csv.DictReader(f)
for row in dict_reader:
print(row)
print('8-5')
s = '''title,author,year
The Weirdstone of Brisingamen,Alan Garner,1960
Perdido Street Station,China Méville,2000
Thud!,Terry Pratchett,2005
The Spellman Files,Lisa Lutz,2007
Small Gods,Terry Pratchett,1992'''
with open(filename, 'w') as f:
print(s, file=f, end='')
print('8-6')
import sqlite3 as sql
dbname = 'books.db'
conn = sql.connect(dbname)
cur = conn.cursor()
cur.execute('''CREATE TABLE book (
title VARCHAR(100),
author VARCHAR(50),
year INT)''')
print('8-7')
ins = 'INSERT INTO book VALUES(?, ?, ?)'
with open(filename) as f:
dict_reader = csv.DictReader(f)
for row in dict_reader:
cur.execute(ins, (row['title'], row['author'], row['year']))
print('8-8')
ins = '''SELECT title FROM book ORDER BY title'''
cur.execute(ins)
for title in cur.fetchall():
print(title[0])
print('8-9')
cur.execute('''SELECT * FROM book ORDER BY year''')
for row in cur.fetchall():
print(row)
conn.commit()
cur.close()
conn.close()
print('8-10')
import sqlalchemy as sa
conn = sa.create_engine('sqlite:///{0}'.format(dbname))
rows = conn.execute(ins)
for row in rows:
print(row[0])
# Redis サーバーはインストールしてないけど、MongoDB はインストール済みだから
# pymongo module を利用して MongoDB を Redis の代わりとして。
print('8-11')
from pymongo import MongoClient
c = MongoClient(host='localhost')
dbh = c['mydb']
test_doc = {'count': 1, 'name': 'Fester Bestertester'}
dbh.redis.drop()
dbh.redis.insert_one(test_doc)
for doc in dbh.redis.find():
print(doc)
print('8-12')
dbh.redis.update_one({'name': 'Fester Bestertester'},
{'$inc': {'count': 1}})
for doc in dbh.redis.find():
print(doc)
入出力結果(Terminal, IPython)
$ ./sample.py
8-1
8-2
True
8-3
8-4
{'author': 'J R R Tolkien', 'book': 'The Hobbit'}
{'author': 'Lynne Truss', None: [' Shoots & Leaves"'], 'book': ' "Eats'}
8-5
8-6
8-7
8-8
Perdido Street Station
Small Gods
The Spellman Files
The Weirdstone of Brisingamen
Thud!
8-9
('The Weirdstone of Brisingamen', 'Alan Garner', 1960)
('Small Gods', 'Terry Pratchett', 1992)
('Perdido Street Station', 'China Méville', 2000)
('Thud!', 'Terry Pratchett', 2005)
('The Spellman Files', 'Lisa Lutz', 2007)
8-10
Perdido Street Station
Small Gods
The Spellman Files
The Weirdstone of Brisingamen
Thud!
8-11
{'name': 'Fester Bestertester', '_id': ObjectId('57b9ba59a54d755d38a5d633'), 'count': 1}
8-12
{'name': 'Fester Bestertester', '_id': ObjectId('57b9ba59a54d755d38a5d633'), 'count': 2}
$
0 コメント:
コメントを投稿