我正在尝试将对象保存到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;
什么都没出现,有什么不对?
答案 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));
}