Es mostren els missatges amb l'etiqueta de comentaris mysql. Mostrar tots els missatges
Es mostren els missatges amb l'etiqueta de comentaris mysql. Mostrar tots els missatges

divendres, 28 d’octubre del 2011

Com instal·lar XAMPP a Ubuntu.

A l'hora de fer presentacions i demos d'aplicacions web, pot ser molt útil disposar d'una versió de la demo en un servidor web en localhost, potser en una clau usb.

També pot ser molt útil un servidor web d'aquest tipus a l'hora de preparar sessions de formació.

És possible trobar per Internet diverses distribucions que d'aquest tipus que combinen Apache amb  MySQL i PHP, tant sobre Linux (LAMP), com sobre Windows (WAMP), per exemple XAMPP o MoWeS Portable.

MoWeS Portable empaqueta, a més de la plataforma AMP, altres aplicacions que utilitzen aquesta infraestructura, com Joomla! o Drupal. Ara bé, MoWeS Portable només està disponible per a Windows.

XAMPP, en canvi, s'ofereix per a Linux i Windows.

En el post d'avuí el que faig és instal·lar el XAMPP a un netbook Linux.

No cal dir que la plataforma AMP es pot instal·lar des del Centre de Programari de l'Ubuntu. Però la instal·lació de XAMPP és encara més senzilla.

Dit i fet. El primer pas és descarregar-se el paquet d'instal·lació. El  puc trobar en aquesta adreça:  http://sourceforge.net/projects/xampp/files/BETAS/xampp-linux-1.7.7.tar.gz/download. Són uns 77MB.

Aquesta versió incorpora:   Apache, MySQL, PHP amb PEAR, Perl, ProFTPD, phpMyAdmin, OpenSSL, GD, Freetype2, libjpeg, libpng, gdbm, zlib, expat, Sablotron, libxml, Ming, Webalizer, pdf class, ncurses, mod_perl, FreeTDS, gettext, mcrypt, mhash, eAccelerator, SQLite i IMAP C-Client.

En particular Apache 2.2.21, MySQL 5.5.16, PHP 5.3.8, i phpMyAdmin 3.4.5.

Per instal·lar  n'hi ha prou amb desempaquetar el tar.gz. Cal tenir en compte que als fitxers d'instal·lació s'assumeix que la home del XAMPP serà /opt/lampp. Això NO vol dir que només es pugui instal·lar en aquesta carpeta. Això l'únic que vol dir és que caldrà que /opt/lampp sigui la "home" del XAMPP i això es podrà aconseguir amb un enllaç simbòlic des de /opt/lampp al directori d'instal·lació que triï.

Si la carpeta de destinació del XAMPP es troba en una clau usb caldrà que aquesta clau estigui formatada amb un sistema de fitxers que permeti els enllaços simbòlics, per exemple  ext2,ext3 o ext4.

A l'hora de fer l'enllaç simbòlic caldrà tenir en compte el punt de muntatge del dispositiu. Per exemple, al meu netbook amb Ubuntu 11.04, el punt de muntatge és /media.

Per a poder instal·lar correctament el XAMPP caldran, a més, permisos de root. I també per a posar en marxa i aturar els diversos components de la distribució.

Tenint en compte tot l'anterior, instal·lo el XAMPP a la meva carpeta home, on he deixat el tar.gz:

sudo tar xvfz xampp-linux-1.7.7.tar.gz -C .

Amb la ordre anterior es crea una carpeta lampp amb els dversos components del XAMPP.

Ara creo l'enllaç simbòlic:

sudo ln -s /home/albert/lampp /opt/lampp

I engego per primer cop el servidor. Aquesta primera arrencada acaba d'instal·lar i configurar els components.

albert@athena:~$ sudo /opt/lampp/lampp start
Starting XAMPP for Linux 1.7.7...
XAMPP: Starting Apache with SSL (and PHP5)...
XAMPP: Starting MySQL...
XAMPP: Starting ProFTPD...
XAMPP for Linux started.
albert@athena:~$ 

I per revisar la nova instal·lació en tinc prou amb obrir un navegador i apuntar-lo al localhost:




El directori arrel del servidor web es troba a /opt/lampp/htdocs (en el meu cas, mercès a l'enllaç simbòlic, és /home/albert/lampp/htdocs).

Per aturar el XAMPP puc fer:


albert@athena:~$ sudo /opt/lampp/lampp stop
Stopping XAMPP for Linux 1.7.7...
XAMPP: Stopping Apache with SSL...
XAMPP: Stopping MySQL...
XAMPP: Stopping ProFTPD...
XAMPP stopped.
albert@athena:~$ 

I per a eliminar la instal·lació sense deixar rastres, amb el XAMPP aturat, n'hi ha prou amb fer:

sudo rm -r lampp

És possible engegar i aturar individualment els diversos components del XAMPP. Examinant el fitxer $HOME/lampp/lampp es poden  trobar les diverses opcions disponibles. La forma d'invocar-les, en general, és: 

sudo /opt/lampp/lampp opció

dissabte, 12 de febrer del 2011

Com fer servir MySQL amb Python. Mòdul MySQL-DB

Aquest post és molt similar al'anterior, però en aquest la base de dades és MySQL. Per a desenvolupar aplicacions que facin servir MySQL amb Python, el primer pas és instal·lar algun mòdul que permeti accedir-hi amb Python.

El mòdul més popular per accedir a MySQL amb Python és MySQL-DB (http://sourceforge.net/projects/mysql-python/).

Com en d'altres ocasions, és possible instal·lar aquest mòdul a la una distribució Ubuntu des del"Centre de Programari de l'Ubuntu".

També instal·lo l'extensió de debug, tot des del "Centre de Programari de l'Ubuntu"


És imprescindible llegir la documentació (recordem que amb pydoc podrem consultar la documentació o presentar-la en format html).


La documentació online la trobem a http://mysql-python.sourceforge.net/MySQLdb.html

A continuació, repetiré el senzill experiment del post anterior que consistia en connectar-se a una base de dades existent i executar-hi consultes, però, en aquesta ocasió, fent servir una base de dades MySQL.

Primer de tot, amb l'Anjuta, creo un projecte nou del tipus Python generic.

Hi enganxaré el següent script. Remarcar-ne només l'us dels parametres charset='utf8' i use_unicode=True en el connect. SCalen per a recuperar correctament dades de tipus text que puguin tenir accents, dièresis... La resta de l'script és molt senzill i els comentaris expliquen que fa el codi.

 #!/usr/bin/python
# coding: latin-1
#

import MySQLdb
import sys


def main():
    print "Connectant a la base de dades localhost / proves"
      
    try:

        # obté una connexió, si no es pot connectar, llença una excepció
        # charset='utf8', use_unicode=True -> necessaris per a recuperar dades amb accents
        v_conn=MySQLdb.connect(host='localhost', user='root', passwd='password', db='proves', charset='utf8', use_unicode=True)
        print "Connectat!\n"
      
        # conn.cursor retorna un objecte cursor, per a fer les consultes.
        v_cur=v_conn.cursor()
      
        #executa una query
        v_cur.execute("select id,valor,traduccio from taula1")
      
        # obté totes les files
        v_files = v_cur.fetchall()

        # mostra les files
        for v_fila in v_files:
            print str(v_fila[0]) + " ; " + v_fila[1] + " ; " + v_fila[2]

        # tanca el cursor
        v_cur.close()
      
        # tanca la connexió
        v_conn.close()
 
      
    except:
    # obté informació de l'excepció
        e_exceptionType, e_exceptionValue, e_exceptionTraceback = sys.exc_info()
        # mostra la informació i acaba.
        sys.exit("error, %s" % (e_exceptionValue))

# final
if __name__ == "__main__":
    sys.exit(main())


Des del mateix Anjuta puc provar:

EXECUTING:
/home/albert/wp-python/prova-Mysql/src/python_mysql.py
----------------------------------------------
Connectant a la base de dades localhost / proves
Connectat!

1 ; valor 1 ; traducció 1
2 ; valor 2 ; traducció 2
3 ; valor 3 ; traducció 3
4 ; valor 4 ; traducció 4
5 ; valor 5 ; traducció 5
6 ; valor 6 ; traducció 6

----------------------------------------------
Program exited successfully with errcode (0)
Press the Enter key to close this terminal ...


Un senzill experiment de com accedir a MySQL amb scripts de Python fent servir el mòdul MySQLdb.

divendres, 13 d’agost del 2010

Com accedir a PostgreSQL (o MySQL, o FireBird) amb Lazarus / 31 juliol 2010

Com accedir a PostgreSQL (o MySQL, o FireBird) amb Lazarus

Tanco la serie de "com accedir a una base de dades del tipus xxxx amb Lazarus" amb el post d'avui, en el que desenvolupo una aplicació que accedeix a una taula d'una base de dades del tipus PostgreSQL.

L'entorn és Ubuntu Lucid Lynx 10.04. Amb el Centre de Programari de l'Ubuntu m'he instal·lat  PostgreSQL 8.4 i PgAdmin III. Que pel poc que he vist, és una molt bona eina d'administració i de consulta i força intuitiva.

El primer pas ha estat canviar el password de l'usuari postgres. Per això he fet des d'un terminal
sudo -u postgres psql postgres
i, a continuació, dins de la consola de sql

\password postgres

La barra de l'inici és important. Li indico el nou password: per exemple, "masterkey". (consulteu l'ajuda al setup de PostgreSQl a Ubuntu).

Un cop fet  això, amb pgAdmin ja podré registrar el servidor Localhost i crear-hi una nova base de dades que anomenaré 'proves'. A proves, dins l'esquema public, hi creo una taula taula1, amb les mateixes columnes que en posts anteriors:  id (numèrica i PK), valor (text) i traducció (text).




Puc fer servir pgAdmin per a informar amb dades la taula.


I ara creo l'aplicació amb Lazarus. Idèntica a la del post  accedir amb Lazarus a SQLite. Amb un parell de diferències. En aquesta ocasió, els components d'accés seran uns altres:





Poso un component de Connexió a Postgres del tipus TPQConnection (objecte PQConnection1)
Un objecte TSQLTransaction (SQLTranasaction1) i un TSQLQuery (SQLQuery1) i els connecto entre ells.
En particular:
PQConnection1. UserName: postgres
PQConnection1.password: masterkey
PQConnection1.hostname: localhost
PQConnection1.databasename: proves
PQConnection1.transaction: SQLTransaction1

SQLTransaction1. Database: PQConnection1

SQLQuery1.database: PQConnection1
SQLQuery1.transaction: SQLTransaction1
SQLQuery1.SQL: select id,valor,traduccio from taula

La resta és un camp memo i tres botons Carregar (Button1Click), Netejar (Button2Click) i Sortir (Button3Click).

El codi del form és:

unit unProvaPostgres01;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, pqconnection, sqldb, FileUtil, LResources, Forms, Controls,
  Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Memo1: TMemo;
    PQConnection1: TPQConnection;
    SQLQuery1: TSQLQuery;
    SQLTransaction1: TSQLTransaction;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
var
  sId, sValor, sTraduccio, sLinea: String;
begin
  (* obre connexions a la BD *)
  PQConnection1.Open;
  SQLQuery1.Open;

  (* itera a través de la BD *)
  SQLQuery1.First;
  while not SQLQuery1.EOF do begin
    sId := SQLQuery1.FieldByName('id').AsString;
    sValor := SQLQuery1.FieldByName('valor').AsString;
    sTraduccio := SQLQuery1.FieldByName('traduccio').AsString;
    sLinea := sId + '; ' + sValor + '; ' + sTraduccio;
    Memo1.Append(sLinea);
    SQLQuery1.Next;
  end;

  // tanca la query
  SQLQuery1.Close;
  PQConnection1.Close;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Memo1.Clear;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  Application.Terminate;
end;

initialization
  {$I unprovapostgres01.lrs}
end.

EL codi anterior funciona exactament igual amb bases de dades del tipus FireBird / InterBase, o amb Bases de dades del tipus MySQL (si més no, fins a la 5.0), només que canviant el component TPQConnection per un TIBConnection per a les FireBird/InterBase, o per un TMySQL40Connection per a les MySQL4.0, TMySQL41Connection per a MySQL4.1 o TMySQL50Connection per a les MySQL50.

Amb les bases de dades del tipus MySQL 5.1 el control de connexió disponible amb Lazarus SqlDB funciona a mitges. No tanca bé. Suposo que es podria buscar algun control alternatiu, però cal trobar-lo. És una mala notícia perquè la versió de MySQL del repositori de programari d'Ubuntu per a Lucid és la 5.1

En tot cas, aquest és el HelloWorld de la connexió de Lazarus a Postgres (i a FireBird i fins a les MySQL 5.0).