Устанавливая/вставка в Базу данных Many-Many с Python, SQLALchemy, Sqlite

Euro Micelli

Одно отрицание для добавления - то, что указатели на стек больше не действительны, когда функция возвращается, таким образом, Вы не можете возвратить указатель на переменную стека от функции. Это - распространенная ошибка и основная причина, почему Вы не можете обойтись просто переменными стека. Если Ваша функция должна возвратить указатель, то Вы имеете к malloc и соглашению с управлением памятью.

7
задан RivieraKid 17 August 2011 в 14:13
поделиться

1 ответ

Во-первых, вы должны использовать SQL-конструктор SQLAlchemy для вставок, чтобы дать SQLAlcehemy больше информации о том, что вы делаете.

 result = conn.execute(RSSEntries.insert(), {'feed_id': id, 'short_url': tinyurl,
        'content': content, 'hashtags': hashtags, 'date': date})
 entry_id = result.last_insert_ids()[0]

Чтобы вставить ассоциации тегов в вашу схему, вам нужно сначала посмотреть идентификаторы ваших тегов и создайте те, которые не существуют:

tags = tag_table
tag_id_query = select([tags.c.tagname, tags.c.id], tags.c.tagname.in_(hashtags))
tag_ids = dict(conn.execute(tag_id_query).fetchall())
for tag in hashtags:
    if tag not in tag_ids:
        result = conn.execute(tags.insert(), {'tagname': tag})
        tag_ids[tag] = result.last_inserted_ids()[0]

Затем просто вставьте связанные идентификаторы в feedtag_table . Вы можете использовать поддержку executemany, передав список dicts методу execute.

conn.execute(feedtag_table.insert(),
    [{'feedid': entry_id, 'tagid': tag_ids[tag]} for tag in hashtags])
4
ответ дан 7 December 2019 в 14:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: