我正在使用Pycharm 2017.3。我的python版本是3.4。
我试图使用sqlite4和pyqt将数据插入到表中。
我已经成功地创建了一个表,但是连一个数据都无法插入。
这是我要进口的东西
from PyQt4.QtGui import *
site_pack_path = "C:\\Python34\\Lib\\site-packages"
QApplication.addLibraryPath('{0}\\PyQt4\\plugins'.format(site_pack_path))
from PyQt4.QtSql import *
from PyQt4.QtCore import *
import sys
from urllib.request import Request, urlopen下面是我如何创建一个表
query.exec_("CREATE TABLE dictin(ID INTEGER PRIMARY KEY AUTOINCREMENT, "
"word varchar(100), searchShortDefn varchar(300),mnemonics varchar(500), "
"defArr varchar(500), defDict varchar(500))")然后有一个函数,其目的是将数据插入到不起作用的表中。
def getWordsAndInsert(word, searchShortDefn, mnemonics, defArr, defDict):
word=str(word)
searchShortDefn=str(searchShortDefn)
mnemonics=str(mnemonics)
defArr=str(defArr)
defDict=str(defDict)
print(query.exec_("INSERT INTO dictin(word, searchShortDefn, mnemonics, defArr, defDict) "
"VALUES(word, searchShortDefn, mnemonics, defArr, defDict)"))如您所见,我已经将所有内容转换为string,因为我的内容不是string。传递给getWordsAndInsert方法的参数类型为
class 'str'
class 'str'
class 'str'
class 'list'
class 'list'分别使用。
下面是调用函数getWordsAndInsert的示例
getWordsAndInsert("abbreviate",
"shorten",
"abbreviate consists of brevity(means brief)",
['(verb) reduce in scope while retaining essential elements', '(verb) shorten'],
[{'syn': ['renounce'], 'sent': ['The King abdicated when he married a divorcee']}]) 虽然当我用实际的字符串替换变量时,我可以插入,但是很明显,它没有完成工作。
print(query.exec_("INSERT INTO dictin(word, searchShortDefn, mnemonics, defArr, defDict) "
"VALUES('word', 'searchShortDefn', 'mnemonics', 'defArr', 'defDict')"))发布于 2018-01-04 01:38:27
为了在查询中建立值,我们可以使用prepare()来为数据建立占位符,这些占位符是我们通过bindValue()填写的。
def getWordsAndInsert(word, searchShortDefn, mnemonics, defArr, defDict):
word = str(word)
searchShortDefn = str(searchShortDefn)
mnemonics = str(mnemonics)
defArr = str(defArr)
defDict = str(defDict)
query = QSqlQuery()
query.prepare("""INSERT INTO dictin (word, searchShortDefn, mnemonics, defArr, defDict)
VALUES (:word, :searchShortDefn, :mnemonics, :defArr, :defDict)""")
query.bindValue(":word", word)
query.bindValue(":searchShortDefn", searchShortDefn)
query.bindValue(":mnemonics", mnemonics)
query.bindValue(":defArr", defArr)
query.bindValue(":defDict", defDict)
if query.exec_():
print("Successful")
else:
print("Error: ", query.lastError().text())https://stackoverflow.com/questions/48087336
复制相似问题