遭遇例2

Python

カテゴリー: エラー  閲覧数:237 配信日:2018-06-22 10:28


修正前


return(row)
#!/usr/bin/python3.6 python
import sqlite3
from bottle import route, default_app

@route('/demo/application/python-crawling-scraping/chapter2/savesqlite3')
def index():
conn = sqlite3.connect('top_cities.db') # top_cities.dbファイルを開き、コネクションを取得する。

c = conn.cursor() # カーソルを取得する。
# execute()メソッドでSQL文を実行する。
# このスクリプトを何回実行しても同じ結果になるようにするため、citiesテーブルが存在する場合は削除する。
c.execute('DROP TABLE IF EXISTS cities')
# citiesテーブルを作成する。
c.execute('''
CREATE TABLE cities (
rank integer,
city text,
population integer
)
''')

# execute()メソッドの第2引数にはSQL文のパラメーターのリストを指定できる。
# パラメーターで置き換える場所(プレースホルダー)は?で指定する。
c.execute('INSERT INTO cities VALUES (?, ?, ?)', (1, '上海', 24150000))

# パラメーターが辞書の場合、プレースホルダーは :キー名 で指定する。
c.execute('INSERT INTO cities VALUES (:rank, :city, :population)',
{'rank': 2, 'city': 'カラチ', 'population': 23500000})

# executemany()メソッドでは、複数のパラメーターをリストで指定できる。
# パラメーターの数(ここでは3つ)のSQLを順に実行できる。
c.executemany('INSERT INTO cities VALUES (:rank, :city, :population)', [
{'rank': 3, 'city': '北京', 'population': 21516000},
{'rank': 4, 'city': '天津', 'population': 14722100},
{'rank': 5, 'city': 'イスタンブル', 'population': 14160467},
])

conn.commit() # 変更をコミット(保存)する。

c.execute('SELECT * FROM cities') # 保存したデータを取得するSELECT文を実行する。
for row in c.fetchall(): # クエリの結果はfetchall()メソッドで取得できる。
return(row) # 保存したデータを表示する。

conn.close() # コネクションを閉じる。

application = default_app()



修正後


return(str(row))
#!/usr/bin/python3.6 python
import sqlite3
from bottle import route, default_app

@route('/demo/application/python-crawling-scraping/chapter2/savesqlite3')
def index():
conn = sqlite3.connect('top_cities.db') # top_cities.dbファイルを開き、コネクションを取得する。

c = conn.cursor() # カーソルを取得する。
# execute()メソッドでSQL文を実行する。
# このスクリプトを何回実行しても同じ結果になるようにするため、citiesテーブルが存在する場合は削除する。
c.execute('DROP TABLE IF EXISTS cities')
# citiesテーブルを作成する。
c.execute('''
CREATE TABLE cities (
rank integer,
city text,
population integer
)
''')

# execute()メソッドの第2引数にはSQL文のパラメーターのリストを指定できる。
# パラメーターで置き換える場所(プレースホルダー)は?で指定する。
c.execute('INSERT INTO cities VALUES (?, ?, ?)', (1, '上海', 24150000))

# パラメーターが辞書の場合、プレースホルダーは :キー名 で指定する。
c.execute('INSERT INTO cities VALUES (:rank, :city, :population)',
{'rank': 2, 'city': 'カラチ', 'population': 23500000})

# executemany()メソッドでは、複数のパラメーターをリストで指定できる。
# パラメーターの数(ここでは3つ)のSQLを順に実行できる。
c.executemany('INSERT INTO cities VALUES (:rank, :city, :population)', [
{'rank': 3, 'city': '北京', 'population': 21516000},
{'rank': 4, 'city': '天津', 'population': 14722100},
{'rank': 5, 'city': 'イスタンブル', 'population': 14160467},
])

conn.commit() # 変更をコミット(保存)する。

c.execute('SELECT * FROM cities') # 保存したデータを取得するSELECT文を実行する。
for row in c.fetchall(): # クエリの結果はfetchall()メソッドで取得できる。
return(str(row)) # 保存したデータを表示する。

conn.close() # コネクションを閉じる。

application = default_app()




2-6.データを保存する