Home > Web Development > Python und MySQLdb

Python und MySQLdb

February 12th, 2012 Leave a comment Go to comments

An Python liebe ich die intuitive Schreibweise und die Knappheit des Codes um Probleme in nur wenigen Zeilen lösen zu können.

Heute schreibe ich kurz wie man mit Python und der Library MySQLdb einfach und schnell einen Datenbankzugriff zu einer MySQL DB herstellen kann.

Python und MySQLdb

Python und MySQLdb

 

Zuerst muesst Ihr sicherstellen das Python und MySQLdb installiert sind und funktionieren.

In einer Unix Umgebung könnt ihr dazu einfach ‘python’ im Terminal eingeben und dann mit ‘import MySQLdb’ die Library importieren. Sofern keine Fehlermeldung erscheint, sollte sowohl Python, also auch MySQLdb einwandfrei funktionieren.

Zuerst erstelle ich mir eine config.ini, welche die Zugangsdaten fuer die MySQL DB beinhaltet.

 

config.ini

[mysql]
host=localhost
port=8080
user=root
passwd=password
db=test
unix_socket=/var/run/mysqld/mysqld.sock (ubuntu)

 

Danach schreibe ich das Python script, welches die config.ini und die MySQLdb library importiert und den Zugriff zur Datenbank herstellt.

Python Script

import MySQLdb, ConfigParser

def ConnectToDB():
  """Establish database connection."""
  host = config.get("mysql","host")
  port   = int(config.get("mysql","port"))
  user   = config.get("mysql","user")
  passwd = config.get("mysql","passwd")
  db     = config.get("mysql","db")
  unix_socket = config.get("mysql","unix_socket")

  conn = MySQLdb.connect (host=host,
      port=port,
      user=user,
      passwd=passwd,
      db=db,
      unix_socket=unix_socket)
  return conn


def CloseDBConnection(conn):
  """Close DB connection."""
  conn.close ()


def WriteValuesToDB(conn, table, colnames, colvalues):
  """Write Values to DB."""
  cursor = conn.cursor()
  sql = 'INSERT INTO ' + table + ' ' + colnames + ' VALUES' + values
  cursor.execute(sql)

 

Mögliche Probleme mit Python und MySQLdb

TypeError: an integer is required
Lösung: Port muss ein Integer Wert sein. Benutze (int(config.get(“mysql”,”port”))

TypeError: connect() argument 2 must be string, not int
Lösung: Du musst die optionalen Variablen bei dem Methodenaufruf von MySQLdb.connect definieren.

conn = MySQLdb.connect (host=host,
    port=port,
    user=user,
    passwd=passwd,
    db=db,
    unix_socket=unix_socket)

Categories: Web Development Tags: ,
  1. No comments yet.
  1. No trackbacks yet.