para example python mysql

example - python mysql install offline



MySQL CARGAR DATOS LOCALES INFILES Python (3)

Estoy ejecutando Ubuntu 12.04 y MySQL 5.5. Bien, este es el problema:

Usando el módulo MySQLDB para Python, el comando SQL:

cursor.execute("LOAD DATA LOCAL INFILE ''example.csv'' INTO TABLE ''example_mysql_table'' TERMINATED BY '','';")

No funciona Obtengo ERROR 1148: The used command is not allowed with this MySQL version

He buscado una solución para esto por un tiempo, y hasta ahora parece que otras personas que tienen el mismo problema lo han solucionado agregando "local-infile = 1" a ''my.cnf'' debajo de [mysqld] y [mysql ]. Esto no me ha funcionado, y no estoy seguro de por qué.

Enlace relevante:

MySQL: Habilitar DATOS LOCALES DE LA CARGA


Como veo, no hay opción de archivo local-infile . Pero puedes cambiar este valor dinámicamente en un script.

Para ver esta opción ejecute esta consulta -

SELECT @@global.local_infile;

Para establecer la variable use esta declaración -

SET @@global.local_infile = 1;

Probado en la consola de línea de comandos de MySQL, todo está bien:

SET @@GLOBAL.local_infile = 1; LOAD DATA LOCAL INFILE ''test.csv'' INTO TABLE table1; Query OK, 3 rows affected (0.06 sec) SET @@GLOBAL.local_infile = 0; LOAD DATA LOCAL INFILE ''test.csv'' INTO TABLE table1; ERROR 1148 (42000): The used command is not allowed with this MySQL version


Después de pasar horas probando todo tipo de configuraciones en los archivos de configuración y reiniciando mysql docenas de veces, se me ocurrió esto, lo que parece resolver el problema (no se pudo encontrar en ninguna documentación).

MySQLdb.connect(server, username, password, database, local_infile = 1)


Sé que este es un tema muy antiguo, pero pensé que solo añadiría una pequeña nota a pie de página con respecto a Flask.

No pude cargar ningún archivo csv a MySQL a través de LOAD DATA INFILE, así que intenté usar LOAD DATA LOCAL INFILE. Obtuve el mismo ''ERROR 1148: el comando usado no está permitido con esta versión de MySQL'' mencionado anteriormente.

Mi solución a esto fue abrir flaskext> mysql.py y modificar la función ''conectar''. Yo añadí:

if self.app.config[''MYSQL_LOCAL_INFILE'']: self.connect_args[''local_infile''] = self.app.config[''MYSQL_LOCAL_INFILE'']

Luego agregué:

app.config[''MYSQL_LOCAL_INFILE''] = True

a mi módulo matraz. Esto permite efectivamente que la opción local_infile de pymysql se configure en ''Verdadero'' cuando se usa flaskext.mysql