Solo un principiante con la combinazione python/postgres quindi perdonami se questo è banale. Sto esecuzione di una query SQL greggio sqlalchemy lungo le linee di:clausola IN con numeri interi in sqlalchemy/psycopg2
SELECT * FROM table WHERE pk_table_id IN()
Per l'esempio qui sotto ho provato self.ids
come una tupla contenente stringa o numeri interi, nonché una matrice contenente stringa o numeri interi. In ogni caso, non ha funzionato.
Quando uso questa linea:
my_connection.execute('SELECT * FROM public.table WHERE pk_table_id IN (%s)', self.ids)
ottengo l'errore:
TypeError: not all arguments converted during string formatting
Qualche suggerimento?
fissa la risposta, perché la la versione originale produrrebbe ''%, s,%, s,%, s''. –
Non è corretto: la query single '% s' si aspetta la sequenza con un singolo elemento. –
Questa è la soluzione che ho usato per risolvere il mio problema, grazie. Il mio usecase: '' tags_to_remove = set (['foo', 'bar']) '' '' db.execute ('DELETE FROM article_tags WHERE article_id =? AND nome tag IN (% s)'% (', '.join ((' '?',) * len (tags_to_remove))), article_id, * tags_remove) '' – bufh