Пример вставки или обновления SQLAlchemy
В Python, используя SQLAlchemy, я хочу вставить или обновить строку. Я пробовал это:
existing = db.session.query(Toner)
for row in data:
new = Toner(row[0], row[1], row[2])
Это не работает. Как сделать INSERT или UPDATE new
в таблице Toner
? Я подозреваю, что это произошло слиянием, но я не понимаю, как это сделать.
Ответы
Ответ 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