如何使用python在mysql中存储一个巨大的字符串(长度为50000)。 我有一个长度接近50000的大字符串。我必须将它存储到mysql中。 有人建议将字符串存储为blob或文本类型。
任何人都可以帮我解决如何将字符串转换为blob类型
def main():
stringKey=''
stringValues=''
keys=ccv.keys() //ccv is a dictionary data structure
vectors=ccv.values() //ccv is a dictionary data structure
for key in keys:
stringKey='#'.join(key for key in keys)
for value in vectors:
stringValues='$'.join(str(value) for value in vectors)
insert(stringKey,stringValues)
print 'insert successful'
def insert(k,v):
db = mysql.connector.connect(user='root', password='abhi',
host='localhost',
database='cbir')
sql= 'INSERT INTO ccv(key,vector) VALUES(%s,%s)'
args = (k,v)
cursor=db.cursor()
cursor.execute(sql,args)
db.commit()
db.close()
错误:
ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'key,vector) VALUES('27:1:8#27:1:9#25:2:11#6:9:8#6:9:9#6:9:6#6:9:7#6:9:4#6:9:5#27' at line 1
答案 0 :(得分:1)
你在:
中犯了一个小错误'INSERT INTO ccv(key,vector) VALUES(%s,%s)'
应该是:
"INSERT INTO ccv (`key`, `vector`) VALUES(%s, %s)"
注意表示列名的`
。
正如Larry提醒我的那样,不必为参数化查询引用值。
如果已经为longtext设置了字段,则无需将数据转换为blob即可正常工作。
问题只与语法有关,而与数据或列类型无关。
答案 1 :(得分:0)
您不需要转换字符串,您需要将数据库中的字段类型从varchar更改为longtext。
答案 2 :(得分:0)
您没有将参数与SQL语句关联。
你想要
cursor.execute(sql, args)
而不是
cursor.execute(sql)
答案 3 :(得分:0)
sql = "INSERT INTO ccv(`key`,`vector`) VALUES(%s,%s)"
这很好用