MkSQL error en connect

Chema Cortés ch3m4 en ch3m4.org
Jue Jul 24 11:00:46 CEST 2003


Miguel B escribió:
> Este es mi primer post, asi que les mando un saludos a todos
> 
> Ahora si, soy novato en python (por eso fui directo sobre wxpython + Boa). Quiese probar el MkSQL (un paquete que usa el MetaKit) pero al correr el ejemplo me marca este error: 
>   File "D:\PYTHON22\lib\site-packages\Pythonwin\pywin\framework\scriptutils.py", line 310, in RunScript
>     exec codeObject in __main__.__dict__
>   File "D:\MkSQL-0.b.1\MkSQL\test\testdbi.py", line 145, in ?
>     main()
>   File "D:\MkSQL-0.b.1\MkSQL\test\testdbi.py", line 10, in main
>     conn1 = connect('gadflytest.mk4')
> NameError: global name 'connect' is not defined

Por lo que veo, estás ejecutanto la prueba desde el PythonWin. ¿Has 
probado a ejecutarla desde fuera?

> la funcion connect si esta definida en MkSQl, pero en el ejemplo las primeras lineas estan asi:
> #! /usr/bin/env python
> from MkSQL.MkSQLDBI import *
> import os
> 
> # to see RI make a difference, set "lambda pd: pd > 0" on table likes column perday.
> # now the record ('frankies', 'snafu', 0) will fail to add and queries
> # 1, 3, 4 and 5 will be different 
> def main():
>     conn1 = connect('gadflytest.mk4')
>     rs1 = runqueries(conn1)
>     if os.path.exists('testdbi.mk4'):
>         os.remove('testdbi.mk4')
>     conn2 = connect('testdbi.mk4')
>     create(conn2)                   # creates with RI
>     conn2.commit()  
>     conn2.close()   
> 
> se debe de ejecutar la funcion connect asi o se tiene que crear primero un objeto MkSQL??

No hace falta crear ningún objeto. El "from..import" introduce todas las 
definiciones hechas en MkSQL/MkSQLDBI.py como si hubieran sido definidas 
por tí.

He probado el testdbi.py, y a mí me funciona correctamente, incluso en 
Pythonwin. ¿No estarás usando una versión de python antigüa? ¿Has 
probado a hacer un dir() a ver si tienes definida realmente la función 
connect? (Con dir() sacas un listado de todos los nombres conocidos por 
el intérprete (variables, objetos, módulos, clases,...). Puedes 
"navegar" como si fueran directorios de ficheros. Por ejemplo, con 
dir("os") puedes ver los nombres importados de éste módulo).

Puedes ir paso a paso en la ejecución utilizando el debugger (se lo 
indicas al ejecutar el script). Comprueba qué hace, y observa qué pasa 
cuando define el connect.

Ya nos contarás.




Más información sobre la lista de distribución Python-es