<prompt> Tengeneza programu ya Python inayounganisha kwenye hifadhidata ya PostgreSQL na inaruhusu watumiaji kutekeleza shughuli za CRUD kwenye jedwali la kuhifadhi maelezo kuhusu vitabu, kama vile kichwa, mwandishi na tarehe ya uchapishaji. Programu inapaswa pia kutoa utendaji wa utafutaji ili kupata vitabu kwa kichwa au mwandishi. PLINFORMAT  <response>: kuagiza psycopg2kutoka kwa psycopg2 Kosa la kuingizadef create_connection: jaribu: muunganisho psycopg2.connect mwenyejimhudumu wa ndani, hifadhidataduka la vitabu, mtumiajipostgres, nenosirinenosiri_lako uunganisho wa kurudi isipokuwa Ila, Kosa kama kosa: printKosa wakati wa kuunganisha kwa PostgreSQL, kosadef close_connectionmuunganisho: ikiwa unganisho: connection.close print Muunganisho wa PostgreSQL umefungwadef create_table: muunganisho create_connection cursor connection.cursor create_table_query CREATE TABLE vitabu id UFUNGUO WA MSINGI WA SERIAL, kichwa VARCHAR255 SI UFUPI, mwandishi VARCHAR255 NOT NULL, publication_tarehe DATE; cursor.executecreate_table_query connection.commit print Jedwali limeundwa kwa mafanikio katika PostgreSQL muunganisho_wa_karibumuunganishodef insert_bookkichwa, mwandishi, tarehe_ya_kuchapishwa: muunganisho create_connection cursor connection.cursor insert_query fINGIZA KWENYE vitabu jina, mwandishi, tarehe_ya_kuchapishwa THAMANI kichwa, mwandishi, tarehe_ya_ya kuchapishwa; cursor.executeinsert_query connection.commit chapisha Kitabu kimeingizwa kwa mafanikio muunganisho_wa_karibumuunganishodef update_bookkitambulisho_cha_kitabu, kichwa, mwandishi, tarehe_ya_kuchapishwa: muunganisho create_connection cursor connection.cursor update_query fUPDATE vitabu SET titletitle, authorauthor, publication_datepublication_date WHERE idbook_id; cursor.executeupdate_query connection.commit chapisha Kitabu kimesasishwa kwa mafanikio muunganisho_wa_karibumuunganishodef delete_bookkitabu_kitabu: muunganisho create_connection cursor connection.cursor delete_query fFUTA KUTOKA kwa vitabu WHERE idbook_id; cursor.executefuta_query connection.commit chapa Kitabu kimefutwa kwa mafanikio muunganisho_wa_karibumuunganishodef search_bookssearch_query: muunganisho create_connection cursor connection.cursor select_query f CHAGUA KUTOKA kwenye vitabu AMBAPO kichwa KAMA search_query AU mtunzi KAMA search_query; cursor.tekelezachagua_query safu cursor.fetchall kwa safu katika safu: printfID: safu0, Kichwa: safu1, Mwandishi: safu2, Tarehe ya Kuchapishwa: safu3 muunganisho_wa_karibumuunganisho Toa maoni kwa mistari ifuatayo ili kujaribu kazitengeneza_mezaingiza_kitabuKichwa cha Kitabu, Jina la Mwandishi, 2021-01-01kitabu_sasisho1, Kichwa Kilichosasishwa cha Kitabu, Jina Lililosasishwa la Mwandishi, 2021-02-01futa_kitabu1tafuta_vitabuKichwa 