Архив рубрики: Python

Python и аргументы командной строки

В питоне есть два способа получения аргументов запуска скрипта из командной строки:

  1. Использовать модуль argparse. Попробовал. Не понравилось, потому что — это еще одна дополнительная зависимость в скрипте, что мне сильно не нравится, когда шапка простого скрипта забита десятком строк import с модуля которых нет в «базе», что нервирует когда запускаешь первый раз скрипт на системе с «голым» питоном. Для желающих, вот например хорошая статья
  2. Использовать стандартный модуль sys. Менее «навороченный», но и хотяб документацию не нужно «переваривать» с пол часа. И так всё понятно и стандартно.

Итак, пример скрипта:

# -*- coding: utf-8 -*-
import socket
import sys
import mysql.connector
from mysql.connector import Error


#настройки скрипта
vr="1.0"
hostdb="localhost"
database="grib"
userdb="root"
passdb="";


#выводим имя ПК и версию скрипта                
hostname = socket.gethostname()
print ("Server: ",hostname);
print ("Version: ",vr);

#разбираем коммандную строку

if len(sys.argv)>=3: 
   liscnt=sys.argv[2]
else:
    print ("Параметры запуска:")
    print ("-n XX  - количество выводимых строк в запросе")
    exit(0)
#пробуем соедениться с mysql
try:
    conn = mysql.connector.connect(host=hostdb,database=database,user=userdb,password=passdb)
    if conn.is_connected(): print('Вроде соеденился!')
except Error as e:
    print("Ошибка: ",e);
    exit(0);    

#создаем курсор запроса, с выводом имен столбцов
cursor = conn.cursor(dictionary=True)
try:
    cursor.execute("SELECT * FROM wp_posts limit "+liscnt);
    row = cursor.fetchone()
    while row is not None:
        print(row['post_title'])
        row = cursor.fetchone()
    conn.close()
except Error as e:
    print("Ошибка выполнения SQL: ",e);
    exit(0);    

Выборка из базы на python с именованными ячейками.

На php я привык, что результат запроса от базы данных, всегда приходит в именованном массиве. На python  это по не понятной причине по умолчанию не так. Вот как выглядит код для получения именованного массива на python:

# -*- coding: utf-8 -*-
import mysql.connector
from mysql.connector import Error
                
name='Павел';
print("Hello ",name);

try:
    conn = mysql.connector.connect(host='localhost',database='grib',user='root',password='')
    if conn.is_connected(): print('Вроде соеденился!')
except Error as e:
    print(e);
    exit(0);    

cursor = conn.cursor(dictionary=True)
cursor.execute("SELECT * FROM wp_posts");
row = cursor.fetchone()
while row is not None:
    print(row['post_title'])
    row = cursor.fetchone()
conn.close()

Изучаем Python. Запросы Mysql

Вот пример программы, для получения данных из БД Mysql. Синтаксис конечно не очень — как то чуть более сложнее по сравнению с PHP. Чуть позже попробую создать класс для работы с MySQL, добавив чуть больше «сахара».

# -*- coding: utf-8 -*-
import mysql.connector
from mysql.connector import Error
                
name='Павел';
print("Hello ",name);

try:
    conn = mysql.connector.connect(host='localhost',database='grib',user='root',password='')
    if conn.is_connected(): print('Вроде соеденился!')
except Error as e:
    print(e);
    exit(0);    

cursor = conn.cursor()
cursor.execute("SELECT * FROM wp_posts");
row = cursor.fetchone()
while row is not None:
    print(row)
    row = cursor.fetchone()
conn.close()

Изучаем Python. Грабли №2

Как оказалось, установив питон, под Windows мы не имеем сразу возможности работать с MySQL. Для этого нужно найти, скачать и установить дополнительный модуль. Поиск по гуглу дал два самых популярных:  MySQLdb и официальный от MySQL . Первый — скачал установил — не заработал. Видимо еще нужно было еще какие-то манипуляции проводить. Второй — заработал сам, сразу после установки. Итак пробуем:

# -*- coding: utf-8 -*-
import mysql.connector
from mysql.connector import Error

def connect():    
    try:
        conn = mysql.connector.connect(host='localhost',database='grib',user='root',password='')
        if conn.is_connected(): print('Вроде соеденился!')
    except Error as e:
        print(e)
    finally:
        conn.close()
        
name='Павел';
print("Hello ",name);
connect();

Установка модулей для работы с MySQL на Ubuntu:

sudo apt-get install python-mysql.connector

FreeBSD:

pkg install py27-mysql-connector-python