Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пробуем на вкус MySQL. питон для доступа к MySQL 
V
    Опции темы
proDiva
Дата 20.10.2006, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 19.9.2006
Где: КЧР, Россия

Репутация: нет
Всего: 7



Код

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
import string
from MySQLdb import connections

def Connect(db,host,user,password):
    db=connections.Connection(db=db, host=host, user=user, passwd=password)
    return db.cursor()
    
def Select(curs):
    row=curs.execute("SELECT * from fiz;")
    rw=curs.fetchone()
    for i in range(row):
        rw=curs.fetchone()
        print rw

curs=Connect('test','localhost','root','pass')
Select(curs)


Не получается записать результаты в файл стандартными методами (вместо вывода на экран). Может есть специальные для данного случая?
PM MAIL ICQ   Вверх
slivlen
Дата 20.10.2006, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 8.8.2006

Репутация: 1
Всего: 3



Код

def Select(curs):
    f=open('backup', 'w')
    row=curs.execute("SELECT * from fiz;")
    rw=curs.fetchone()
    for i in range(row):
        rw=curs.fetchone()
        f.write(','.join(rw))
    f.close()

PM MAIL   Вверх
Artemios
Дата 20.10.2006, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 14.8.2006
Где: Саратов, Россия

Репутация: нет
Всего: 50



Код

$ python myprogram.py > log.txt

шутка smile


--------------------
fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ]
PM MAIL   Вверх
proDiva
Дата 20.10.2006, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 19.9.2006
Где: КЧР, Россия

Репутация: нет
Всего: 7



slivlen, вот что выдал:

Traceback (most recent call last):
  File "C:\MySQL_proba\1.py", line 25, in -toplevel-
    Select(curs)
  File "C:\MySQL_proba\1.py", line 19, in Select
    t.write(','.join(rw))
TypeError: sequence expected, NoneType found

про это я и говорила, что стандартные методы не сработали smile 
Может есть еще варианты?

Artemios, оценила)))
PM MAIL ICQ   Вверх
slivlen
Дата 20.10.2006, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 8.8.2006

Репутация: 1
Всего: 3



Хех... А зачем rw=curs.fetchone() перед циклом? У тебя из-за этого выход за пределы массива происходит и fetchone возвращает None. 
Еще кстати каждый элемент надо к строке приводить.
Код

def Select(curs):
    f=open('backup', 'w')
    row=curs.execute("SELECT * from fiz;")
    for i in range(row):
        rw=curs.fetchone()
        f.write(','.join([ str(r) for r in rw]))
    f.close()




Это сообщение отредактировал(а) slivlen - 20.10.2006, 14:50
PM MAIL   Вверх
proDiva
Дата 20.10.2006, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 19.9.2006
Где: КЧР, Россия

Репутация: нет
Всего: 7



Цитата(slivlen @  20.10.2006,  14:43 Найти цитируемый пост)
Хех... А зачем rw=curs.fetchone() перед циклом? У тебя из-за этого выход за пределы массива происходит и fetchone возвращает None. 

Это не моя идея, взяла пример здесь: Использование модуля MySQLdb
PM MAIL ICQ   Вверх
slivlen
Дата 20.10.2006, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 8.8.2006

Репутация: 1
Всего: 3



Цитата(proDiva @  20.10.2006,  15:15 Найти цитируемый пост)
Это не моя идея, взяла пример здесь: Использование модуля MySQLdb
Там все правильно. Сначало идет вывод результатов, а потом очередной fetchone. Ты просто строки местами поменяла, вот и ошибка появилась smile
PM MAIL   Вверх
proDiva
Дата 20.10.2006, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 19.9.2006
Где: КЧР, Россия

Репутация: нет
Всего: 7



Не спорю, я часто ошибаюсь, спасибо за помощь.
Еще вопрос..... кодировка utf-8...... в базе все на русском отлично вижу, а возвращает одни вопросы (символы). Видимо, где-то еще нестыковка?
PM MAIL ICQ   Вверх
slivlen
Дата 20.10.2006, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 8.8.2006

Репутация: 1
Всего: 3



У меня тоже было такое. Посмотри решение здесь: http://softwaremaniacs.org/forum/viewtopic.php?id=175
PM MAIL   Вверх
proDiva
Дата 20.10.2006, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 19.9.2006
Где: КЧР, Россия

Репутация: нет
Всего: 7



Попробовала создать новую базу и явно задать кодировку....... все равно возвращает вопросы smile 
PM MAIL ICQ   Вверх
slivlen
Дата 20.10.2006, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 8.8.2006

Репутация: 1
Всего: 3



Попробуй зделать еще так:
Код

def Select(curs):
    f=open('backup', 'w')
    curs.execute("set character set utf8")
    row=curs.execute("SELECT * from fiz;")
    for i in range(row):
        rw=curs.fetchone()
        f.write(','.join([ str(r) for r in rw]))
    f.close()

PM MAIL   Вверх
proDiva
Дата 20.10.2006, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 19.9.2006
Где: КЧР, Россия

Репутация: нет
Всего: 7



Причем как бы явно не задавалась кодировка cp1251.... латиница замечательно выходит.

Добавлено @ 16:49 
slivlen, последний вариант сработал...... выражаю искеннюю благодарность от лица всего коллектива smile 
Но все-таки интересно, почему так сработало?
PM MAIL ICQ   Вверх
proDiva
Дата 25.12.2006, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 19.9.2006
Где: КЧР, Россия

Репутация: нет
Всего: 7



Код

import sys
import string
import pysqlite2 as db
from MySQLdb import connections

def Connect(db,host,user,password):
    con=connections.Connection(db=db, host=host, user=user, passwd=password)
    return con.cursor()
    
def Select(curs):
    curs.execute("set character set cp1251")
    row=curs.execute("SELECT * from fiz;")
    rw=curs.fetchone()
   
def Insert(curs):
    row=curs.execute("INSERT INTO fiz (FIO) VALUES ('life')")
    
curs=Connect('alina','192.168.200.165','root','1111')
Select(curs)
curs.execute("set character set utf8")
Insert(curs)


Что не так? Не хочет вставлять запись smile 
PM MAIL ICQ   Вверх
_Viper_
Дата 25.12.2006, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 8.11.2006

Репутация: нет
Всего: 11



Цитата(proDiva @  25.12.2006,  12:49 Найти цитируемый пост)
Что не так? Не хочет вставлять запись  

а commit вызывать не надо?

PM MAIL   Вверх
proDiva
Дата 26.12.2006, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 19.9.2006
Где: КЧР, Россия

Репутация: нет
Всего: 7



Честно говоря, не знаю, что делает эта команда...... что-то типа "сохранить"?
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Базы данных | Следующая тема »


 




[ Время генерации скрипта: 0.0886 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.