无法从python

时间:2017-01-29 00:56:46

标签: python mysql

我正在尝试将对象保存到mysql表中。我用表创建了一个数据库,在这个表中有一个文本列。

我的实际代码是

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

其中test是我从json解析的对象。输入此命令后,python显示1L,但在sql中我执行

select * from table;

什么都没出现,有什么不对?

2 个答案:

答案 0 :(得分: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这样的完整ORM

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

取决于您尝试做什么:)

答案 1 :(得分:0)

您需要提交对数据库所做的更改。使用:

void swap(data list[], i, j){
    data tmp;

    tmp.num1 = list[i].num1
    list[i].num1 = list[j].num1
    list[j].num1 =tmp.num1
    //using memmove to avoid overlaping from the strcpy function
    memmove(temp.name,list[i].name,strlen(list[i].name));
    memmove(list[i].name,list[j].name,strlen(list[j].num1));
    memmove(list[j].name,tmp.name,strlen(tmp.name));
}