Одно отрицание для добавления - то, что указатели на стек больше не действительны, когда функция возвращается, таким образом, Вы не можете возвратить указатель на переменную стека от функции. Это - распространенная ошибка и основная причина, почему Вы не можете обойтись просто переменными стека. Если Ваша функция должна возвратить указатель, то Вы имеете к malloc и соглашению с управлением памятью.
Во-первых, вы должны использовать 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])