2014-09-22 192 views
1

我正在学习自然语言处理。我需要在MySQL表的列中存储一个列表,例如[“We”,“are not”,“friends”,“。”],以便当我想分析它时,我可以从数据库中读取它。我的代码 部分是:Python NLP:如何将python列表存储到MySQL数据库?

tokenized_text = nltk.word_tokenize(line) 
sql2 = 'update training_data set tokenized_essay = "{0}" where filename = "{1}"'.format(tokenized_text,res) 
cursor.execute(sql2) 

_mysql_exceptions.ProgrammingError:(1064,“您的SQL语法错误;检查对应于你的MySQL服务器版本的手册

我已经设置了tokenized_text为LONGTEXT。我试图JSON,酱菜库,但 列看来,问题是如何逃脱的单quote.eg“不” 请帮帮我!

回答

1

烨可以使用MySQL的Python 1.2 .5 Python的MySQL接口

MySQLdb是用于Python的流行MySQL数据库服务器的接口。下面是示例例如

import MySQLdb 
db=MySQLdb.connect(passwd="moonpie",db="thangs") 
c=db.cursor() 
c.executemany(
     """INSERT INTO breakfast (name, spam, eggs, sausage, price) 
     VALUES (%s, %s, %s, %s, %s)""", 
     [ 
     ("Spam and Sausage Lover's Plate", 5, 1, 8, 7.95), 
     ("Not So Much Spam Plate", 3, 2, 0, 3.95), 
     ("Don't Wany ANY SPAM! Plate", 0, 4, 3, 5.95) 
     ]) 

更多细节:http://mysql-python.sourceforge.net/MySQLdb.html

更新:

哦没关系,用于存储列表项,这个例子可能会有帮助

def encoding(val): 
    if isinstance(val, unicode): 
     return val.encode('utf-8') 
    else: 
     return str(val) 


for id, val in mydict.items(): 
    data = dict(reduce(lambda x, y: x+y, [v.items() for v in val]) + [('id', id)]) 
    sorted_keys = sorted(map(str, data.keys())) 
    sorted_vals = map(encoding, [v[k] for k in sorted_keys]) # sorted by keys 
    format = ', '.join(["'%s'"] * len(sorted_vals)) 
    c.execute("insert into deldictmysql 
       (%s) values (%s)" % (', '.join(sorted_keys), format), sorted_vals) 
+0

嘿,谢谢你的回复。我正在使用MysQLdb.However,请注意我的问题。我如何将一个python列表存储到MySQL中,而不是一个字符串。该列表中充满了标记化的词语。 – allenwang 2014-09-22 14:07:38

+0

@ wanglan8498:请检查更新,如果它有助于关闭与apprppriat行动的线程 – user123 2014-09-23 07:42:02

+0

谢谢你的最早的答复。但似乎你不明白我想要解决什么。我想把一个单词标记列表存储到一列,比如[“我们”,“不是”,“朋友”,“。”]。当我把这个列表放到更新的SQL语句中时,发生单引号错误。我不知道如何解决它。 – allenwang 2014-09-23 12:17:25

1

我想你可以使用加入并拆分以包装或解析例如

foo = ["hola", "mundo"] 
bar = ' '.join(foo) 
print bar 
: "hola mundo" 

foo = bar.split(' ') 
print foo 
: ["hola", "mundo"] 
相关问题