Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 30, 2020 22:14:50

andyg0t
Зарегистрирован: 2020-09-30
Сообщения: 3
Репутация: +  0  -
Профиль  

Функция записи в бд

Всем привет,
Хотел попросить помощи в написании функции. Сейчас функция принимает 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)

Офлайн

#2 Сен. 30, 2020 23:12:59

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Функция записи в бд

 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)

Офлайн

#3 Окт. 3, 2020 12:56:05

andyg0t
Зарегистрирован: 2020-09-30
Сообщения: 3
Репутация: +  0  -
Профиль  

Функция записи в бд

В итоге решил вот так:

 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'])

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version