我正在尝试使用变量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'
答案 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的参数替换分开。以上是粗略的方法,但与您自己的代码差别不大。