はじめに
前回の記事では、Webアプリケーションフレームワークとテンプレートエンジンについて学びました。今回は、データベースの操作とセキュリティについて取り上げます。
1. データベースの操作
1.1 SQLiteの利用
SQLiteは、サーバーレスで軽量なデータベースエンジンであり、Python標準ライブラリとして組み込まれています。
# SQLiteデータベースへの接続とデータの操作
import sqlite3
# データベースに接続
conn = sqlite3.connect('example.db')
# カーソルを取得
cursor = conn.cursor()
# テーブルの作成
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER
)
''')
# データの挿入
cursor.execute('INSERT INTO users (name, age) VALUES (?, ?)', ('Alice', 25))
cursor.execute('INSERT INTO users (name, age) VALUES (?, ?)', ('Bob', 30))
# コミット
conn.commit()
# データの取得
cursor.execute('SELECT * FROM users')
rows = cursor.fetchall()
for row in rows:
print(row)
# 接続をクローズ
conn.close()
1.2 ORMの利用
ORM(Object-Relational Mapping)を使うと、データベースのテーブルをPythonのオブジェクトとして操作することができます。
# SQLAlchemyのインストール
pip install SQLAlchemy
# SQLAlchemyを使ったデータベース操作
from sqlalchemy import create_engine, Column, Integer, String, MetaData
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# データベースに接続
engine = create_engine('sqlite:///example.db', echo=True)
Base = declarative_base()
# テーブルの定義
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String, nullable=False)
age = Column(Integer)
# テーブルの作成
Base.metadata.create_all(engine)
# セッションの作成
Session = sessionmaker(bind=engine)
session = Session()
# データの挿入
user1 = User(name='Alice', age=25)
user2 = User(name='Bob', age=30)
session.add(user1)
session.add(user2)
session.commit()
# データの取得
users = session.query(User).all()
for user in users:
print(user.id, user.name, user.age)
# セッションをクローズ
session.close()
2. セキュリティ
2.1 サニタイズとエスケープ処理
Webアプリケーションにおいて、外部からの入力を適切に扱うことが重要です。サニタイズ(入力値の無害化)とエスケープ処理(HTMLエンティティへの変換)を行うことで、クロスサイトスクリプティング(XSS)などのセキュリティリスクを軽減できます。
2.2 パスワードのハッシュ化
ユーザーのパスワードなどの重要な情報は、データベースに保存する際にハッシュ化して保管します。ハッシュ化された情報は元の値を推測することが難しくなり、セキュリティを向上させます。
# passlibのインストール
pip install passlib
# passlibを使ったパスワードのハッシュ化
from passlib.hash import sha256_crypt
password = "mypassword"
hashed_password = sha256_crypt.hash(password)
print(hashed_password)
まとめ
データベースの操作とセキュリティについて学びました。データベースを利用することで、Webアプリケーションのデータ管理が容易になります。また、セキュリティ対策をしっかり行うことで、重要な情報の漏洩や不正アクセスを防ぐことができます。次回はAPIの作成とデータの公開について詳しく解説しますので、お楽しみに!
(Visited 82 times, 1 visits today)