MySQLdb接続がコンテキストマネージャになっていることに注意してください。 user2966041's answerを参照してください。
あなたはこのようなものを使用できます:あなたはあなたのPYTHONPATHにconfig.py
を置き、そこHOST、USER、PASS、MYDB変数を定義し、それを使用するには
import config
import MySQLdb
import MySQLdb.cursors as mc
import _mysql_exceptions
DictCursor = mc.DictCursor
SSCursor = mc.SSCursor
SSDictCursor = mc.SSDictCursor
Cursor = mc.Cursor
class Cursor(object):
def __init__(self,
cursorclass=Cursor,
host=config.HOST, user=config.USER,
passwd=config.PASS, dbname=config.MYDB,
driver=MySQLdb,
):
self.cursorclass = cursorclass
self.host = host
self.user = user
self.passwd = passwd
self.dbname = dbname
self.driver = driver
self.connection = self.driver.connect(
host=host, user=user, passwd=passwd, db=dbname,
cursorclass=cursorclass)
self.cursor = self.connection.cursor()
def __iter__(self):
for item in self.cursor:
yield item
def __enter__(self):
return self.cursor
def __exit__(self, ext_type, exc_value, traceback):
self.cursor.close()
if isinstance(exc_value, Exception):
self.connection.rollback()
else:
self.connection.commit()
self.connection.close()
with Cursor() as cursor:
print(cursor)
connection = (cursor.connection)
print(connection)
を。あなたが代わりにoursql使用して検討する必要があります
with some_connection as cursor:
do_something_with(cursor)
:
ということにも注意してくださいoursqlを内蔵 with
構造が付属してMySQL用の代替ドライバーです。
優れたソリューション!あなたはMySQLdbの答えを出しただけでなく、他のドライバと一緒に使うこともできます。また、oursqlは有望です。ありがとう。 – conradlee
@MMartins:ありがとうございました。 – unutbu