2017-01-29 4 views
0

Я пытаюсь сохранить объект в таблице mysql. Я создал базу данных с таблицей, в этой таблице есть текстовый столбец.Не удается записать в базу данных mysql из python

мой фактический код

conn = MySQLdb.connect(host='localhost', user='root',  passwd='password',db='database') 
x = conn.cursor() 
x.execute("""INSERT INTO table (title) VALUES (%s)""", (test,)) 

где тест объект, который я создал разбор из JSON. После ввода этой команды python показывает 1L, но когда в sql i do

select * from table; 

ничего не отображается, что не так?

+0

Добавить команду фиксации 'conn.commit()' в конец ваших входов. Это говорит о соединении, чтобы нажать предыдущие команды на db. – James

+0

Мне нужно добавить x.commit() в x.execute? – GGA

+0

Да. 'x.execute (...)', за которым следует 'conn.commit()'. – James

ответ

0

Необходимо внести изменения, внесенные в базу данных. Использование:

x.execute(...) 
conn.commit() 
0

Я бы попробовал одну из двух вещей. Если мне нужно пойти с полным скриптом, я не буду использовать conn ... Я сделаю вызов подпроцесса.

# farm_out_to_os.py 
cmd = """INSERT INTO table (title) VALUES ({})""".format(test)) 
subprocess.call("mysql -u{} -p{} < {}".format(uname, pwd, cmd), shell=True) 

Но если вы хотите сделать это более программным способом, может рассмотреть вопрос об использовании полной ОРМ как SQLAlchemy

# models.py 
import sqlalchemy as db 
from sqlalchemy import declarative_base 

Base = declarative_base() 

class MyTable(Base): 
    __tablename__ = 'mytable' 
    id = db.Column(db.Integer, primary_key=True) 
    val = db.Column(db.Integer) 

    def __init__(self, val): 
     self.val = val 

И код:

# code.py 
from sqlalchemy import create_engine, sessionmaker 

engine = create_engine(config.SQLALCHEMY_URL) 
session = sqlalchemy.sessionmaker(bind=engine) 
newval = models.MyTable(val=5) 
session.add(newval) 
session.commit() 
session.close() 

Зависит от того, что вы пытаетесь :

Смежные вопросы