Найти - Пользователи
Полная версия: Функция записи в бд
Начало » Python для новичков » Функция записи в бд
1
andyg0t
Всем привет,
Хотел попросить помощи в написании функции. Сейчас функция принимает 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()
PEHDOM
 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
>>>
andyg0t
В итоге решил вот так:
 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'])
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB