Python插入%s MySQL

时间:2016-11-20 16:09:50

标签: python mysql

我正在尝试使用变量test作为表名将一些数据插入到数据库中。但不幸的是,我似乎无法实现这一目标。谁能帮我吗?

从我的加薪中我得到了:

let NameAndCity = React.createClass ({
getInitialState: function() {
return {
  name: this.props.name,
  city: this.props.city
};
},

componentWillMount: function() {
let username = localStorage.getItem('username')
let city = localStorage.getItem('city')
if(username && city){
  this.setState({
    name: username,
    city: city
  })
} else {localStorage.setItem('username', this.state.name)
localStorage.setItem('city', this.state.city)}
},

changeName(e){
this.setState({name: e.target.value})
localStorage.setItem('username', this.state.name)
},

changeCity(e){
this.setState({city: e.target.value})
localStorage.setItem('city', this.state.city)
},

render(){return (
<div className='name-and-city'>
  <input value={this.state.name} onChange={(e)=> this.changeName(e)}/>
  <input value={this.state.city} onChange={(e)=> this.changeCity(e)}/>
</div>
)}
})

我的代码:

TypeError: unsupported operand type(s) for %: 'tuple' and 'tuple'

2 个答案:

答案 0 :(得分:1)

我不认为MySQLdb允许您使用表名参数 - 通常这用于实际参数(有时来自用户输入并需要清理 - 名称/年龄/性别部分获得此权限) 。您可以使用Python的字符串格式来实现此目的:

sql = ("""INSERT INTO {table} (name, age, gender)
          VALUES (%s, %s, %s)""".format(table=table), (test))

答案 1 :(得分:0)

这样的事情会起作用:

    sql = """INSERT INTO %s (name, age, gender)
    VALUES (%s, %s, %s)""" % (test, "%s", "%s", "%s")

您需要将Python的字符串替换与MySQL的参数替换分开。以上是粗略的方法,但与您自己的代码差别不大。