accès SQLite

Script SQLite

SQLite est un outil puissant il permet de manipuler des données structurées (modèle relationnel) sans les contraintes du modèle client serveur (qu’il ne remplace pas). C’est une alternative à la manipulation de fichiers/xml.

Dans l’exemple ci dessous on créer une fonction python que l’on intègre complètement dans le SQGB de manière quasi transparente. Un deuxième point à remarquer ici c’est que toutes les opérations se déroulent en mémoire et non dans un fichier (mot clef ‘:memory:’).

import sqlite3
import md5
def md5sum(t):   
    return md5.md5(t).hexdigest()
cnx = sqlite3.connect(":memory:")
cnx.create_function("md5", 1, md5sum)
crs = cnx.cursor()
crs.execute("select md5(?)", ("foo",))
print crs.fetchone()[0]
crs.close()
cnx.close()
  • Interroger les jeux de résultats avec le nom des champ comme clef de recherche :
cnx.row_factory = sqlite3.Row

python : requête Oracle

Script SQL Oracle

Script qui se connecte à une base oracle sans passer par un fichier de connexion tns

#-*-coding:utf-8-*-
import cx_Oracle
 
cnx = cx_Oracle.connect('USER/PASS@HOST/SERVICE')
crs=cnx.cursor()
rq = "SELECT * FROM user_tables" 
 
crs.execute(rq)
ds=crs.fetchall()
for dr in ds:
    print dr[0]
crs.close()
cnx.close()

accès SQL MySQL

 

#-*- coding: utf-8-*-
import MySQLdb
 
connexion = MySQLdb.connect(host="", port=3306, db="",user='',passwd='')
 
def sql_get_table(query):
        cursor = connexion.cursor()
        cursor.execute(query)
        return cursor.fetchall()
 
def sql_get_value(query):
    cursor = connexion.cursor()
    cursor.execute(query)
    return cursor.fetchall()[0][0]
     
 
 
def get_machines(connexion):
        
        results = sql_get_table("select * FROM mantis_user_table")
        list = []
        i = 0
        for i in results:
            print i
        return list
 
def create_mantis_user(nom, login,mail):
     
    # vérification de l'existence préalable de l'utilisateur
    req = "select count(*) from mantis_user_table where username='%s'"%login
 
    if sql_get_value(req)==0:
        idmax = sql_get_value("select max(id) FROM mantis_user_table")
     
    sql=" insert into mantis_user_table "
     
    cursor.execute("")
 
#connect()
#get_machines(connexion)
print get_max_user_id(connexion)

accès MS SQL Server

Le script ci dessous permet d’exécuter des requêtes sql (serveur de type ms SQL server)

 

#-*-coding:utf-8-*-
import pymssql
 
srv= r'HOSTNAME[\INSTANCE]'
db = r'DBNAME'
usr= r'USER'
pwd= r'PASS'
 
    
cnx = pymssql.connect(host=srv,user=usr,password=pwd,database=db)
# as_dict=True (colonne accessible par nom)
# trusted=True (connexion sécurisée sans login/pass ceux du système sont utilisé)
crs= cnx.cursor()
#--------------------------------
 
rq='select getdate()'
crs.execute(rq)
ds=crs.fetchone()
print ds[0]
 
#--------------------------------
 
rq="create table T(a int); insert into T values(12); insert into T values(34);"
crs.execute(rq)
 
rq="insert into T values(56); select * from T"
crs.execute(rq)
 
ds=crs.fetchone()
while ds:
    print ds[0]
    ds=crs.fetchone()
 
 
 
#--------------------------------
crs.close()
 
 
#cnx.rollback() # annule les modifs (par défaut)
 
#cnx.commit() # inscrit les modifs
 
cnx.close()

documentation mssql

parcours récursif d’un dossier

Le bout de code suivant parcourt un dossier récursivement et affiche les fichiers trouvés.

import os
root='/home/pascal'
for Root, Dirs, Files in os.walk(root,None,None):
    for f in Files:
        print os.path.join(Root,f)

 

choix dossier/fichier

 Choisir dossier

Le script suivant permet à l’utilisateur de choisir un dossier

import Tkinter
import tkFileDialog
root = Tkinter.Tk()
title='Choisissez un dossier'
dossier = tkFileDialog.askdirectory(parent=root,initialdir="/",title=title)
if len(dossier) > 0:
    print "vous avez choisi le repertoire %s" % dossier

choisir un fichier

Le script suivant permet à l’utilisateur de choisir fichier à ouvrir en écriture

import Tkinter
import tkFileDialog
root = Tkinter.Tk()
title='Choisissez un fichier'
fichier = tkFileDialog.askopenfile(parent=root,mode='rb',title=title)
if fichier != None:
    data = fichier.read()
    fichier.close()
    print "J'ai lu %d octets du fichier." % len(data)

pour filtrer les types de fichiers utiliser les paramètre optionnel filetypes suivant la syntaxe suivante:

filetypes=[('fichiers csv','*.csv'),('tous les fichiers','*.*')]

ftp (file transfert protocol)

envoi de fichier

import ftplib
import os
def sendFtp(ftp_host, ftp_user, ftp_pass, file):
    ftp = ftplib.FTP(ftp_host)
    ftp.login(ftp_user, ftp_pass)
    ext = os.path.splitext(file)[1]
    if ext in (".txt", ".htm", ".csv", ".html"):
        ftp.storlines("STOR " + file, open(file))
    else:
        ftp.storbinary("STOR " + file, open(file, "rb"), 1024)