簡體   English   中英

如何使用python在mysql中存儲一個巨大的字符串(長度為50000)

[英]how to store a huge string (length 50000) in mysql using python

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

你犯了一個小錯誤:

'INSERT INTO ccv(key,vector) VALUES(%s,%s)'

它應該是:

"INSERT INTO ccv (`key`, `vector`) VALUES(%s, %s)"

注意`表示列名。

正如 Larry 提醒我的那樣,不必為參數化查詢引用這些值。

如果字段已經設置為長文本,這應該可以工作,而無需將數據轉換為 blob。

問題僅與語法有關,與數據或列類型無關。

您不需要轉換字符串,您需要將數據庫中的字段類型從 varchar 更改為 longtext。

您沒有將參數與 SQL 語句相關聯。

你要

 cursor.execute(sql, args)

代替

 cursor.execute(sql)
sql = "INSERT INTO ccv(`key`,`vector`) VALUES(%s,%s)"

這工作正常

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM