2017-01-29 7 views
0

私はオブジェクトをmysqlテーブルに保存しようとしています。私はテーブルを持つデータベースを作成しました。この表にはテキストの列があります。Pythonからmysqlデータベースに書き込めません

私の実際のコードは、テストが、私はJSONからパース作成されたオブジェクトをある

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

です。このコマンドを入力した後、Pythonは1Lを表示しますが、SQLの場合は

select * from table; 

何も表示されません、何が間違っていますか?

+0

入力の最後にコミットコマンド 'conn.commit()'を追加します。これは、前のコマンドをdbにプッシュするように接続に指示します。 – James

+0

x.executeの下にx.commit()を追加する必要がありますか? – GGA

+0

はい。 'x.execute(...)'の後に 'conn.commit()'が続きます。 – James

答えて

0

あなたはデータベースに行った変更をコミットする必要があります。使用:

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

私は2つのうちの1つを試してみます。私がそのような完全なスクリプトを持っていなければならない場合、私は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 

とコードのような完全なORM使用することを検討してください:

# 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() 

はあなたがしようとしているかに依存しますするには

関連する問題