Accessing a MySQL database with python
-
On 18/01/2015 at 10:35, xxxxxxxx wrote:
Is it possible?
Are there any libraries available?
My MySQL database is online. -
On 19/01/2015 at 01:16, xxxxxxxx wrote:
Have you tried this? : https://pypi.python.org/pypi/MySQL-python/1.2.5
Haven't tried it but is supposed to be ok.-b
-
On 19/01/2015 at 01:36, xxxxxxxx wrote:
I found that but to include that in my plugins I would have to force users to install that, isn't it?
-
On 23/01/2015 at 17:44, xxxxxxxx wrote:
Hi Rui,
Check out Niklas' C4D Tools
There he mentions this bit of code:
# Store the old module configuration. old_modules = sys.modules.copy() # Import your stuff, for example: lib_path = os.path.join(os.path.dirname(__file__), 'lib') sys.path.insert(0, lib_path) try: import c4dtools finally: sys.path.pop(0) # Restore the previous module configuration making sure to not # remove modules not loaded from the local libraries folder. for k, v in sys.modules.items() : if k not in old_modules and hasattr(v, '__file__') or not v: if not v or v.__file__.startswith(lib_path) : sys.modules.pop(k) else: sys.modules[k] = v res, _ = c4dtools.prepare(__file__, __res__)
You should be able to put the MySQL library in a lib folder next to your source file, and import it using something like the above code.
-
On 23/01/2015 at 17:55, xxxxxxxx wrote:
Hey,
C4dtools is old, I should update it some time. Today, I prefer to paste this snippet into my plugin:
>
> import os, sys, glob
>
>
> class localimport(object) :
>
>
> _modulecache = []
>
>
> _eggs = staticmethod(lambda x: glob.glob(os.path.join(x, '*.egg')))
>
>
> def __init__(self, libpath, autoeggs=False, isolate=False, path=os.path) :
>
>
> if not path.isabs(libpath) :
>
>
> libpath = path.join(path.dirname(path.abspath(__file__)), libpath)
>
>
> self.libpath = libpath; self.autoeggs = autoeggs; self.isolate = isolate
>
>
> def __enter__(self) :
>
>
> self._path, self._mpath = list(sys.path), list(sys.meta_path)
>
>
> self._mods = frozenset(sys.modules.keys())
>
>
> sys.path.append(self.libpath)
>
>
> sys.path.extend(self._eggs(self.libpath) if self.autoeggs else [])
>
>
> def __exit__(self, *args) :
>
>
> sys.path[:] = self._path; sys.meta_path[:] = self._mpath
>
>
> for key in sys.modules.keys() :
>
>
> if key not in self._mods and self._islocal(sys.modules[key]) :
>
>
> localimport._modulecache.append(sys.modules.pop(key))
>
>
> def _islocal(self, mod) :
>
>
> if self.isolate: return True
>
>
> filename = getattr(mod, '__file__', None)
>
>
> if filename:
>
>
> try: s = os.path.relpath(filename, self.libpath)
>
>
> except ValueError: return False
>
>
> else: return s == os.curdir or not s.startswith(os.pardir)
>
>
> else: return FalseAnd then use it like this:
>
> with localimport('relative/path/to/lib/folder') :
>
>
> import some_packageYou can always find the newest version in this gist.
-
On 24/01/2015 at 03:36, xxxxxxxx wrote:
So, with this code I could import the mysql library that would reside in a folder inside my plugin folder?
-
On 24/01/2015 at 07:38, xxxxxxxx wrote:
Yes, if you put the mysql lib in a libs folder at the same level as your plugin's code you should be able to import the MySql library using the above code.