Uso de sqlalchemy para eliminar la interpretación de caracteres especiales:
Nota el uso de la función text("your_insert_statement")
a continuación. Lo que hace es comunicarle a sqlalchemy que todos los signos de interrogación y signos de porcentaje en la cadena pasada deben considerarse como literales.
import sqlalchemy
from sqlalchemy import text
from sqlalchemy.orm import sessionmaker
from datetime import datetime
import re
engine = sqlalchemy.create_engine("mysql+mysqlconnector://%s:%[email protected]%s/%s"
% ("your_username", "your_password", "your_hostname_mysql_server:3306",
"your_database"),
pool_size=3, pool_recycle=3600)
conn = engine.connect()
myfile = open('access2.log', 'r')
lines = myfile.readlines()
penguins = []
for line in lines:
elements = re.split('\s+', line)
print "item: " + elements[0]
linedate = datetime.fromtimestamp(float(elements[0]))
mydate = linedate.strftime("%Y-%m-%d %H:%M:%S.%f")
penguins.append(text(
"insert into your_table (foobar) values('%%%????')"))
for penguin in penguins:
print penguin
conn.execute(penguin)
conn.close()
Do 'db_cur.execute ('' 'SET UPDATE test_table field_1 = "% s" DONDE field_2 ="% s "'' '% (datos, condición))' Tenga en cuenta las comillas simples triples y las comillas dobles alrededor de '% s' – zelusp