これは私のデータベース・マネージャー・クラスである:Pythonでメソッドの匿名呼び出しがありますか?
class DatabaseManager(object):
def __init__(self):
super().__init__()
self.conn = sqlite3.connect('artist.db')
self.c = self.conn.cursor()
def create_table(self):
self.c.execute(
'CREATE TABLE IF NOT EXISTS artists(title TEXT, artist TEXT, album TEXT, year INTEGER, '
'genre TEXT, ext TEXT, path TEXT, art TEXT)')
self.c.close()
self.conn.close()
def insert(self, song):
self.c.execute(
'INSERT INTO artists(title, artist, album, year, genre, ext, path, art) VALUES(?, ?, ?, ?, ?, ?, ?, ?)',
(song.title, song.artist, song.album, song.year, song.genre, song.ext, song.path, song.art))
self.conn.commit()
self.c.close()
self.conn.close()
def retrieve_all(self):
self.c.execute('SELECT * FROM artists')
data = self.c.fetchall()
self.c.close()
self.conn.close()
return data
は、より多くの方法がありますが、これは重要ではありません。私がcreate_table()
を呼び出すと、私はいくつかのデータベースアクションが必要なときに私は別のobect(または過去のものを作り直して)insert
を呼び出して呼び出します。
db = DatabaseManager()
print(db.retrieve_artist('asdf'))
db = DatabaseManager()
print(db.retrieve_all())
これを避ける方法はありますか? Javaでは匿名の呼び出しがあります: new DatabaseManager().retrieve_artist("asdf")
Pythonでは何も同様のことが可能ですか?
Pythonの 'lamda'関数を確認してください –
あなたはJavaでPythonとは何をしていますか?もちろん、変数 '' DatabaseManager()。retrieve_artist( 'asdf') 'をスキップすることもできます。 – RemcoGerlich
これは非常に奇妙なAPIですが、オブジェクトを作成すると接続が開き、メソッドを呼び出すと閉じられ、オブジェクトを使用できなくなります。どうして? – RemcoGerlich