Подтвердить что ты не робот

Пример вставки или обновления SQLAlchemy

В Python, используя SQLAlchemy, я хочу вставить или обновить строку. Я пробовал это:

existing = db.session.query(Toner)
for row in data:
    new = Toner(row[0], row[1], row[2])

Это не работает. Как сделать INSERT или UPDATE new в таблице Toner? Я подозреваю, что это произошло слиянием, но я не понимаю, как это сделать.

4b9b3361

Ответ 1

при условии, что имена определенных столбцов...

INSERT one

newToner = Toner(toner_id = 1,
                    toner_color = 'blue',
                    toner_hex = '#0F85FF')

dbsession.add(newToner)   
dbsession.flush()

INSERT multiple

newToner1 = Toner(toner_id = 1,
                    toner_color = 'blue',
                    toner_hex = '#0F85FF')

newToner2 = Toner(toner_id = 2,
                    toner_color = 'red',
                    toner_hex = '#F01731')

dbsession.add_all([newToner1, newToner2])   
dbsession.flush()

UPDATE

q = dbsession.query(Toner)
q = q.filter(Toner.toner_id==1)
record = q.one()
record.toner_color = 'Azure Radiance'

dbsession.flush()

или используя причудливый однострочный шрифт, используя MERGE

record = dbsession.merge(Toner( **kwargs))

Ответ 2

Простейший пример запуска сырой вставки в таблицу mysql с использованием python

Я использую базу данных MySQL и python 2.6.6.

Шаг 1, добавьте эту таблицу в свою базу данных:

create table penguins(id int)

Шаг 2, добавьте это в файл python "load.py":

import sqlalchemy

from sqlalchemy.orm import sessionmaker

engine_internal = sqlalchemy.create_engine("mysql+mysqlconnector://%s:%[email protected]%s/%s"
     % ("youruser", "yourpassword", "yourhostname.com:3306",
     "yourdatabasename"),
     pool_size=3, pool_recycle=3600)

Internal = sessionmaker(bind=engine_internal)

internal = Internal()

try:
    internal.execute("""insert into penguins values (10)""")
    internal.commit()
    print "done"
except:
    print "failed"
finally:
    internal.close()

Шаг 3, запустите его:

[email protected] /home/el $ python load.py
done

Шаг 4, прочитанный из таблицы:

select * from penguins

Печать

10