Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush Python API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Recent
    • Tags
    • Users
    • Login

    Accessing a MySQL database with python

    Scheduled Pinned Locked Moved PYTHON Development
    7 Posts 0 Posters 569 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H Offline
      Helper
      last edited by

      On 18/01/2015 at 10:35, xxxxxxxx wrote:

      Is it possible?
      Are there any libraries available?
      My MySQL database is online.

      1 Reply Last reply Reply Quote 0
      • H Offline
        Helper
        last edited by

        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

        1 Reply Last reply Reply Quote 0
        • H Offline
          Helper
          last edited by

          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?

          1 Reply Last reply Reply Quote 0
          • H Offline
            Helper
            last edited by

            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.

            1 Reply Last reply Reply Quote 0
            • H Offline
              Helper
              last edited by

              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 False

              And then use it like this:

              >
              > with localimport('relative/path/to/lib/folder') :
              >
              >
              > import some_package

              You can always find the newest version in this gist.

              1 Reply Last reply Reply Quote 0
              • H Offline
                Helper
                last edited by

                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?

                1 Reply Last reply Reply Quote 0
                • H Offline
                  Helper
                  last edited by

                  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.

                  1 Reply Last reply Reply Quote 0
                  • First post
                    Last post