Найти - Пользователи
Полная версия: не работает insert & update в mysqldb
Начало » Базы данных » не работает insert & update в mysqldb
1 2 3
kailito
есть следующий код. В базу не заносит. Не ругается. мускль из консоли заносит. Индекс исправно увеличивает после выполнения сего кода, но кроме индеска ничего не меняется


#!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
нет, primary key с автоинкрементом увеличивается.
Viper
kailito, надо вызывать con.commit() после cursor.execute(sql) или настраивать MySQL на автокоммит.
Mkdir
Viper
kailito, надо вызывать con.commit() после cursor.execute(sql) или настраивать MySQL на автокоммит.
+1 (опередили меня)
kailito
хух! спасибо! чуть не поседел)
Mkdir
kailito
Viper у меня же con.close( ), вроде все по букварю. Для пробы убрал всё после cursor.execute(sql) :). Тоже, только в профиль. Может чего MySQLdb нужно достроить?
commit
kailito
Mkdir
осознал и исправился) ещё раз всем спасибо!
proDiva
Есть такой 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
proDiva
Не могу понять, в чем дело
Не зная мускуля, предположу, что вы не правильно написали запрос. Я бы писал так insert into (field0, field1, …, fieldN) values (value0, value1, …, valueN)
и делал бы не
, ‘', ’', 0, ''); COMMIT"
, а cursor.commit() в соответствие с API DB.

Еще можно попробовать убрать умолчальную кодировку в БД - посмотреть как она будет себя вести.
Еще: у тебя точно кодировки в базе и в запросе совпадают? выведи запрос в текстовый файл и проверь кодировку.
Viper
Эта ошибка точно связана с кодировками, можно попробовать использовать метод connection.set_character_set.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB