Python では、PostgreSQL の接続、psycopg2 の connect は、
with 文を書くことができますが、
import psycopg2 with psycopg2.connect("host=localhost port=5432 dbname=urandb user=postgres password=aswe344f") as con: with con.cursor() as cur: # TODO
のように、、、書ける。
mysql-connector-python は、このように、そのまま使うのでは、with文を書けません。
mysql-connector-python · PyPI
with 文で書きたい時は、接続のラッパーを用意します。
mysqlConnector.py
# -*- coding: UTF-8 -*- class MySQLConnector: def __init__(self, host, port, user, password, database): self.host = host self.port = port self.user = user self.password = password self.database = database def __enter__(self): import mysql.connector self.connect = mysql.connector.connect( host=self.host, port=self.port, user=self.user, password=self.password, database=self.database, charset="utf8") return self.connect def __exit__(self, exception_type, exception_value, traceback): self.connect.close()
呼出し。
with MySQLConnector(host='localhost', port=3306, user='food', password='a1B01a', database='foodb') as con: cur = con.cursor() cur.execute('SELECT * FROM users') table = cur.fetchall() print(table)