kailito
Март 14, 2007 16:08:55
есть следующий код. В базу не заносит. Не ругается. мускль из консоли заносит. Индекс исправно увеличивает после выполнения сего кода, но кроме индеска ничего не меняется
#!c:\Python\python.exe
import os, sys, time, string
import MySQLdb
con = MySQLdb.connect(host=“127.0.0.1”, port=3306,
user=“test”, passwd=“test”, db=“test”)
cursor = con.cursor( )
sql = “INSERT sync (ray,timepr,stan,com) VALUES (23,'20070314105501',0,25);”
print sql
cursor.execute(sql)
cursor.close()
con.close( )
заранее прошу прощения, только начал с питоном. ранее давно было знакомство с пхп. никогда таких проблемм небыло
kailito
Март 14, 2007 16:23:55
нет, primary key с автоинкрементом увеличивается.
Viper
Март 14, 2007 16:47:12
kailito, надо вызывать con.commit() после cursor.execute(sql) или настраивать MySQL на автокоммит.
Mkdir
Март 14, 2007 17:05:14
Viper
kailito, надо вызывать con.commit() после cursor.execute(sql) или настраивать MySQL на автокоммит.
+1 (опередили меня)
kailito
Март 14, 2007 17:05:16
хух! спасибо! чуть не поседел)
Mkdir
Март 14, 2007 17:05:57
kailito
Viper у меня же con.close( ), вроде все по букварю. Для пробы убрал всё после cursor.execute(sql) :). Тоже, только в профиль. Может чего MySQLdb нужно достроить?
commit
kailito
Март 14, 2007 17:08:08
Mkdir
осознал и исправился) ещё раз всем спасибо!
proDiva
Март 19, 2007 14:57:30
Есть такой sql-запрос:
“INSERT INTO fiz VALUES ('2000000000', ‘Normal’, ‘Алина’, ‘1982-04-07’, ‘', ’', ‘', ’', ‘', ’', ‘', ’', ‘', ’', ‘', ’', ‘', ’', ‘', ’', ‘', 0, ’'); COMMIT”
На что выходит ошибка:
Traceback (most recent call last):
File “C:\cb\frames.py”, line 339, in OnButtonSave
curs.execute(sql)
File “C:\Python24\Lib\site-packages\MySQLdb\cursors.py”, line 146, in execute
query = query.encode(charset)
UnicodeEncodeError: ‘latin-1’ codec can't encode characters in position 49-53: ordinal not in range(256)
посмотрела cursors.py, он перекодирует запрос в кодировке db….. перепроверила, везде в базе кодировка utf8. Не могу понять, в чем дело.
balu
Март 19, 2007 17:13:21
proDiva
Не могу понять, в чем дело
Не зная мускуля, предположу, что вы не правильно написали запрос. Я бы писал так insert into (field0, field1, …, fieldN) values (value0, value1, …, valueN)
и делал бы не
, ‘', ’', 0, ''); COMMIT"
, а cursor.commit() в соответствие с API DB.
Еще можно попробовать убрать умолчальную кодировку в БД - посмотреть как она будет себя вести.
Еще: у тебя точно кодировки в базе и в запросе совпадают? выведи запрос в текстовый файл и проверь кодировку.
Viper
Март 19, 2007 17:40:36
Эта ошибка точно связана с кодировками, можно попробовать использовать метод connection.set_character_set.