Tenho um exemplo simples de um livro sobre o uso do SQLAlchemy no 1º nível, que é próximo ao DB-API. Desde o lançamento deste livro, sua sintaxe mudou e preciso modificar o código para que funcione. Estou com um problema ao inserir uma linha em uma tabela usando marcadores posicionais em uma string pré-escrita. Aqui está o código:
import sqlalchemy as sa
from sqlalchemy import text
engine = sa.create_engine('sqlite://')
with engine.connect() as conn:
print (conn)
conn.execute(text('''CREATE TABLE zoo (
critter VARCHAR(20) PRIMARY KEY,
count INT,
damage FLOAT)'''))
ins = text('INSERT INTO zoo (critter, count, damage) VALUES (?,?,?)')
conn.execute (ins, [('bear', 2, 1000.0)])
conn.execute (ins, [('weasel', 1, 2000.0)])
rows = conn.execute('SELECT * FROM zoo')
for row in rows:
print (row)
por algum motivo, isso levanta a questão:
'<' não suportado entre instâncias de 'int' e 'str'
...embora eu não esteja correspondendo a nada e a ordem dos valores pareça estar correta (para as colunas correspondentes). Por favor, ajude-me a entender o que está errado aqui?