Ералаш: различия между версиями
Материал из support.qbpro.ru
imported>Supportadmin (Новая страница: «==7Z== 7z -t7z -mx=9 -r -ssc a /home/bases/bases-arh/day-on/base_`date +%d_%m_%y`.7z /home/bases/bases-arh/temp; кстати в этой команде рус…») |
imported>Supportadmin Нет описания правки |
||
| (не показана 1 промежуточная версия этого же участника) | |||
| Строка 1: | Строка 1: | ||
[[Файл:Demot-win.jpg|450px|frame|right|<center>Знай наших!</center>]] | |||
*[http://meta.wikimedia.org/wiki/%D0%9F%D0%BE%D0%BC%D0%BE%D1%89%D1%8C:%D0%A1%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D0%BD%D0%B8%D0%B5 Мета справка по wiki] | |||
*[http://www.wikimatrix.org/compare/Gazest+giewiki+Hatta+Luminotes+MoinMoin+SubWiki+Sycamore+TiddlyWiki+TracWiki+Wiki-on-a-Stick+WikiSH+Zwiki Сравнение движков Wiki написанных на Python] | |||
*[http://djangosnippets.org/snippets/1047/ Снипет для Django и Trac Wiki] | |||
'''Примеры хорошего дизайна:''' | |||
*[http://mainview.ru/vdoxnovenie/primery-dizajna-korporativnyx-sajtov]http://mainview.ru/vdoxnovenie/primery-dizajna-korporativnyx-sajtov | |||
==7Z== | ==7Z== | ||
7z -t7z -mx=9 -r -ssc a /home/bases/bases-arh/day-on/base_`date +%d_%m_%y`.7z /home/bases/bases-arh/temp; | 7z -t7z -mx=9 -r -ssc a /home/bases/bases-arh/day-on/base_`date +%d_%m_%y`.7z /home/bases/bases-arh/temp; | ||
Текущая версия от 14:55, 4 августа 2013
Файл:Demot-win.jpg Знай наших!
Примеры хорошего дизайна:
7Z
7z -t7z -mx=9 -r -ssc a /home/bases/bases-arh/day-on/base_`date +%d_%m_%y`.7z /home/bases/bases-arh/temp;
кстати в этой команде русский поддерживается.. но в скрипте надо локаль цеплять обязательно.. если работаешь через крон вот так: export LANG=ru_RU.UTF-8;
Обработка строк, полученных из БД PostgreSQL
Задача: В таблице mytable есть 3 поля,первое поле - униальный ключ, во втором поле содержатся данные в виде: "Вася;петя;оля;...;толя" Необходимо разделить все имена по отдельности, сделать заглавной первую букву и занести их в таблицу mytable2, где первое поле - уникальный ключ
Решение:
import psycopg2
import sys
import string
def main():
conn_string = "host='localhost' dbname='db' user='pguser' password='pwd'"
print "Connecting to database\n ->%s" % (conn_string)
try:
conn = psycopg2.connect(conn_string)
cursor = conn.cursor()
except:
exceptionType, exceptionValue, exceptionTraceback = sys.exc_info()
sys.exit("Database connection failed!\n ->%s" % (exceptionValue))
cursor.execute("SELECT * FROM mytable") # в таблице 3 поля
temp_prof=list(cursor.fetchall()) # превращаем объект QuerySet в простой список
conn.commit() # завершение транзакий
for row in temp_prof: # перебираем все записи в списке, можно выбирать только второе поле, память сэкономим
for val in row[1].split(';'): # втором элементе каждой строки содержатся фразы, разделенные символом ";"
# их количество разное, поэтому циклом
val1=val.decode('utf-8').strip().capitalize() # необходимо для правильного разбора фразы, её длины(не удвоенной)
# и вообще символов.
# декодировал в ютф8 - обрезал пробелы - первый символ сделал заглавным
cursor.execute("SELECT COUNT(*) FROM mytable2") #сколько записей в mytable2 на момент запроса
ttemp=list(cursor.fetchall()) # превращаем объект QuerySet в простой список
conn.commit()
print ttemp[0][0] # ttemp возвращает [(0L,)] - словарь или список, то что после функции list() получилось
# ttemp[0] возвращает (0L,) - кортеж (в конце запятая)
# ttemp[0][0] возвращает 0 - число, то что надо(COUNT(*) в моём случае равно 0(в самом начале)).
new_index_tabl_info = ttemp[0][0]+1 # присваиваем индекс в mytable2 (следующий)
cursor.execute("SELECT * FROM spravochnik_siz_professia_info WHERE professia= '%s'" % val1) # есть ли фраза в таблице
temp=list(cursor.fetchall()) # превращаем в список для удобства
conn.commit()
if not temp: # если список пуст, т.е. нет фразы в таблице
data = {'id':str(new_index_tabl_info), 'prof':val1} # формируем словарь значений ключ:значение
# ВАЖНО! Ключ должен совпадать с именем поля в таблице
cursor.execute("""INSERT INTO mytable2 VALUES (%(id)s, %(prof)s);""", data) # заносим данные в mytable2
conn.commit()
cursor.close() # очищаем память - закрываем курсор
conn.close() # очищаем память - закрываем соединение
sys.exit() # game over
if __name__ == "__main__":
sys.exit(main())
