/usr/ports/databases/py-MySQL

Sergey Smitienko hunter at comsys.com.ua
Mon Dec 27 04:10:58 PST 2004


Make py-MySQL compile and work with mysql-4-client libraries installed.
btw, I'm not sure, but I guess py-MySQL must be linked against
libmysqlclient_r.so.12 (not included in the patch).

ldd /usr/local/lib/python2.2/site-packages/MySQLmodule.so:
         libmysqlclient.so.12 => 
/usr/local/lib/mysql/libmysqlclient.so.12 (0x4811d000)


--- work/MySQLmodule-1.4/MySQLmodule.c  Mon Dec 27 15:05:56 2004
+++ MySQLmodule.c       Mon Dec 27 15:04:12 2004
@@ -512,7 +512,8 @@
      DBH->dbh_use_result = 0;
      DBH->handle = &DBH->connection;
      DBH->sth = NULL;
-    if (!(mysql_connect(DBH->handle, dbhost, dbuser, dbpass))) {
+    mysql_init(DBH->handle);
+    if (!(mysql_real_connect(DBH->handle, dbhost, dbuser, dbpass, NULL, 
0, NULL, 0l))) {
          if (mysql_error(DBH->handle)[0] != 0) {
             PyErr_SetString(MySQLError,mysql_error(DBH->handle));
         } else {
@@ -735,12 +736,20 @@
       PyObject *args;
  {
      char *dbname;
-
+    char query[512];
+    int rc;
      if (!PyArg_ParseTuple(args, "s:create", &dbname)) return NULL;
      if (self->sth && clear_channel(self->sth)) return NULL;
      Py_XDECREF(self->sth);
      self->sth = NULL;
-    if (mysql_create_db(self->handle, dbname)) {
+
+    rc = snprintf(query, sizeof(query), "CREATE DATABASE %s", dbname);
+    if (rc > sizeof(query)-1) {
+       PyErr_SetString(MySQLError,"Database name too long");
+       return NULL;
+    }
+
+    if (mysql_query(self->handle, query)) {
          PyErr_SetString(MySQLError, mysql_error(self->handle));
          return NULL;
      }
@@ -867,12 +876,21 @@
       PyObject *args;
  {
      char *dbname;
+    char query[512];
+    int rc;

      if (!PyArg_ParseTuple(args, "s:drop", &dbname)) return NULL;
      if (self->sth && clear_channel(self->sth)) return NULL;
      Py_XDECREF(self->sth);
      self->sth = NULL;
-    if (mysql_drop_db(self->handle, dbname)) {
+
+    rc = snprintf(query, sizeof(query), "DROP DATABASE %s", dbname);
+    if (rc > sizeof(query)-1) {
+           PyErr_SetString(MySQLError,"Database name too long");
+           return NULL;
+    }
+
+    if (mysql_query(self->handle, dbname)) {
          PyErr_SetString(MySQLError, mysql_error(self->handle));
          return NULL;
      }


More information about the freebsd-ports mailing list