[英]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.