如何使用python在mysql中存储一个巨大的字符串(长度50000)

时间:2014-04-06 16:21:04

标签: python mysql

如何使用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

4 个答案:

答案 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)"

这很好用