SQL Alchemyとは
MySQLやSQL構文を実際に書かずに、PythonのコマンドのようにSQLコマンドを扱う。また、SQLiteとMySQLを切り替えた際も、Configの設定一つで変更が可能になる。
まずは、普通にMySQL
#データベースの接続
import mysql.connector
conn = mysql.connector.connect(
host: "localhost",
user: "root",
password: "dbパスワード",
database: "データベース名" #db作成時は不要
)
cursor = conn.cursor()
cursor.execute(
#データベース作成
'CREATE DATABASE [データベース名]'
#TABLE作成
'CREATE TABLE persons('
'id int NOT NULL AUTO_INCREMENT,'
'name varchar(14) NOT NULL,'
'PRIMARY KEY(id)')
#データの挿入
'INSERT INTO persons(name) values("sato")'
)
#データベース上での変更(挿入、更新、削除など)を確定させるために、commitメソッドを使用。
#変更が永続的にデータベースに反映
conn.commit()
cursor.close()
conn.close()
SQL Alchemy
import sqlalchemy
import sqlalchemy.ext.declarative
import sqlalchemy.orm
# engine = sqlalchemy.create_engine('splite:///:memory:') #メモリ上で
engine = sqlalchemy.create_engine('mysql+pymysql:///データベース名', echo=True)
Base = sqlalchemy.ext.declarative_base()
class Person(Base):
__tablename__ = 'persons'
id = sqlalchemy.Column(
sqlalchemy.Integer, primary_key=True, autoincrement=True )
name = sqlalchemy.Column(sqlalchemy.String(14))
Base.metadata.create_all(engine)
Session = sqlalchemy.orm.sessionmaker(bind=engine)
session = Session()
#DBへデータを書き込む
person_1 = Person(name='Saito')
session.add(person_1)
session.commit()
#DBからデータの取得
#全てのデータ
person = session.query(Person).all()
#一部のデータ
personS = session.query(Person).filter_by(name='Saito').first()
for person in persons:
print(person.id, person.name)
#データの削除
delete_person = session.query(Person).filter_by(name='Saito').first()
session.delete(delete_person)
session.commit()