def insert_update(self, word, note=""): try: sql = "insert into words (word,note) values (%s,%s)" self.cursor.execute(sql, (word, note)) print("增加成功") except: # 如果单词已经存在就执行更新 if note != "": try: sql = "update words set note=%s where word=%s" self.cursor.execute(sql, (word, note)) print("更新成功") except Exception as e: print(e)无法插入单词的定义
时间: 2024-01-29 22:02:18 浏览: 29
在这段代码中,如果单词已经存在,执行更新的语句中的参数顺序应该是 `(note, word)` 而不是 `(word, note)`,因为 `note` 应该对应 SQL 语句中的第一个 `%s` 占位符,而 `word` 应该对应第二个。修改代码如下:
```
try:
sql = "insert into words (word,note) values (%s,%s)"
self.cursor.execute(sql, (word, note))
print("增加成功")
except:
# 如果单词已经存在就执行更新
if note != "":
try:
sql = "update words set note=%s where word=%s"
self.cursor.execute(sql, (note, word))
print("更新成功")
except Exception as e:
print(e)
```
相关问题
class Dog(object): def __init__(self,name): self.name=name def play(self): print('%s 蹦蹦跳跳的玩'%self.name) class Person(object): def __init__(self,name): self.name=name #补充代码1:编写函数train,输出内容:张三正在训练大黄 def main(): #补充代码2:创建Dog对象,传递参数:"大黄" #补充代码3:创建Person对象,传递参数:"张三" #补充代码4:Person对象调用train函数操作Dog对象 if __name__=='__main__': main()
补充代码1:
```
def train(self, dog):
print('%s 正在训练%s' % (self.name, dog.name))
```
补充代码2:
```
dog = Dog("大黄")
```
补充代码3:
```
person = Person("张三")
```
补充代码4:
```
person.train(dog)
```
完整代码如下:
```
class Dog(object):
def __init__(self, name):
self.name = name
def play(self):
print('%s 蹦蹦跳跳的玩' % self.name)
class Person(object):
def __init__(self, name):
self.name = name
def train(self, dog):
print('%s 正在训练%s' % (self.name, dog.name))
def main():
dog = Dog("大黄")
person = Person("张三")
person.train(dog)
if __name__ == '__main__':
main()
```
用python完成实践(中文词频统计):对中文词频统计项目(import jieba import wordcloud class ChineseWordCounter: def __init__(self): self.content = '' self.words = [] self.word_frequencies = {} def readfile_demo_with(self, filename): with open(filename, encoding='utf-8') as fp: self.content = fp.read() def seperate_words(self): ignore_word = ('的', '与', '个', '和') for word in jieba.cut(self.content, cut_all=False): if (len(word) > 1) and (word not in ignore_word): self.words.append(word) def count_words(self): for word in self.words: if word in self.word_frequencies.keys(): self.word_frequencies[word] += 1 else: self.word_frequencies[word] = 1 def draw_wordcloud(self, img_file): font = 'c:/windows/font/方正粗黑宋简体.ttf' cloudengine = wordcloud.WordCloud(font_path=font) cloudengine.generate(" ".join(self.words)) cloudengine.to_file(img_file))进行修改,把统计出的词频保存到指定的csv文件中。
你可以按照以下方式修改代码,将统计出的词频保存到指定的CSV文件中:
```python
import csv
import jieba
import wordcloud
class ChineseWordCounter:
def __init__(self):
self.content = ''
self.words = []
self.word_frequencies = {}
def readfile_demo_with(self, filename):
with open(filename, encoding='utf-8') as fp:
self.content = fp.read()
def separate_words(self):
ignore_word = ('的', '与', '个', '和')
for word in jieba.cut(self.content, cut_all=False):
if (len(word) > 1) and (word not in ignore_word):
self.words.append(word)
def count_words(self):
for word in self.words:
if word in self.word_frequencies.keys():
self.word_frequencies[word] += 1
else:
self.word_frequencies[word] = 1
def save_word_frequencies_to_csv(self, csv_file):
with open(csv_file, mode='w', encoding='utf-8', newline='') as file:
writer = csv.writer(file)
writer.writerow(['Word', 'Frequency'])
for word, freq in self.word_frequencies.items():
writer.writerow([word, freq])
def draw_wordcloud(self, img_file):
font = 'c:/windows/font/方正粗黑宋简体.ttf'
cloudengine = wordcloud.WordCloud(font_path=font)
cloudengine.generate(" ".join(self.words))
cloudengine.to_file(img_file)
```
你可以调用 `save_word_frequencies_to_csv` 方法,将词频保存到指定的 CSV 文件中。例如,假设你的实例名为 `counter`,你可以通过 `counter.save_word_frequencies_to_csv('word_frequencies.csv')` 来保存词频到 `word_frequencies.csv` 文件中。