Форум сайта python.su
Всем привет,
Хотел попросить помощи в написании функции. Сейчас функция принимает 3 аргумента, я бы хотел что бы название аргументов (полей в БД и их значений) было универсально.
Если есть готовая функция было бы супер. Если нет то подскажите пожалуйста алгоритм действий. Я думал что бы использовать 2 tuple на входе или dict. Но не очень понимаю как потом их разложить в INSERT statement.
import psycopg2 def insertIntoTable(league_id, country, league_name): #def insertVariblesIntoTable(field_ids, values): try: con = psycopg2.connect(database="postgres", user="postgres", password="password", host="127.0.0.1", port="5432") cursor = con.cursor() insertQuery = """INSERT INTO competition () VALUES (%s, %s, %s) """ recordTuple = (league_id, country, league_name) cursor.execute(insertQuery, recordTuple) con.commit() print("Record inserted successfully into table") except (Exception, psycopg2.DatabaseError) as error: print("Failed to insert into table {}".format(error)) finally: if con is not None: con.close()
Отредактировано andyg0t (Окт. 1, 2020 09:03:21)
Офлайн
data={'id1':'value1','id2':'value2', 'id3':'value3'} def insertVariblesIntoTable(**kwargs): for key, value in kwargs.items(): print(key, value) insertVariblesIntoTable(**data) def insertVariblesIntoTable(dct): for key, value in dct.items(): print(key, value) insertVariblesIntoTable(data) >>> >>> id1 value1 id2 value2 id3 value3 id1 value1 id2 value2 id3 value3 >>>
[code python][/code]
Отредактировано PEHDOM (Сен. 30, 2020 23:13:19)
Офлайн
В итоге решил вот так:
import psycopg2 def insertVariblesIntoTable(table, keys, values): try: con = psycopg2.connect(database="postgres", user="postgres", password="password", host="127.0.0.1", port="5432") cursor = con.cursor() insert_query = """INSERT INTO {} ({}) VALUES ('{}')""".format(table, ", ".join([keys[i] for i in range(len(keys))]), "', '".join([values[i] for i in range(len(values))])) cursor.execute(insert_query) con.commit() print("Record inserted successfully into table") except (Exception, psycopg2.DatabaseError) as error: print("Failed to insert into table {}".format(error)) finally: if con is not None: con.close() insertVariblesIntoTable('competition', ['league_id', 'country', 'league_name'], ['33', '44', 'competition'])
Офлайн