python - 测试 Python 到 MySQL 错误

标签 python

我创建了一个小脚本,可以将数据保存到 MySQLdb。起初它在我使用时工作正常:

cursor.execute('INSERT INTO people (name, text) VALUES ("dan", "test2")')

上面的代码会将“dan”保存到标题中,将“test2”保存到文本中。我想测试一下我是否能够定义一些东西并以这种方式填充它。例如,如果我要抓取一个网站并说 (dan = soup.title.string) 或类似的东西,它将能够将这些数据填充到数据库中。我试图环顾四周,但似乎找不到任何东西。

import MySQLdb
import sys

try:
    db = MySQLdb.connect(
        host = 'localhost',
        user = 'root',
        passwd = '',
        db = 'python',
        )
except:
    print "db not found"

dan = "dandandan"
test2 = "testing101"

cursor = db.cursor()
cursor.execute('INSERT INTO people (name, text) VALUES (dan, test2)')
cursor.execute('SELECT * FROM people')
result = cursor.fetchall()
db.commit()
db.close()

我收到的错误是:

C:\Users\********\Desktop>python mysqltest.py
Traceback (most recent call last):
  File "mysqltest.py", line 18, in <module>
    cursor.execute('INSERT INTO people (name) VALUES (dan)')
  File "C:\Python27\lib\site-packages\MySQLdb\cursors.py", line 174, in execute
    self.errorhandler(self, exc, value)
  File "C:\Python27\lib\site-packages\MySQLdb\connections.py", line 36, in defau
lterrorhandler
    raise errorclass, errorvalue
_mysql_exceptions.OperationalError: (1054, "Champ 'dan' inconnu dans field list"
)

最佳答案

你需要使用参数。

cursor.execute('INSERT INTO people (name, text) VALUES (%s,%s)', (dan, test2))

关于python - 测试 Python 到 MySQL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27423891/

相关文章:

python - 在 Google App Engine 中生成唯一且不透明的用户 ID

python - 如何用 Python 编写原始二进制数据?

python - Python 生成器如何节省内存

python - socket 。如何使用 socket.recv() 接收所有数据?

python - 使用 Python 解释器时,如何在脚本运行之前执行一堆 Python 命令?

python - 多继承python类中的类变量

python - 从包含逗号的字符串中提取子字符串

python - 为什么我收到 "WebSocket connection is closed: code = 1000 (OK), no reason"

python - Flask - 如何结合 Flask-WTF 和 Flask-SQLAlchemy 来编辑数据库模型?

python - 如何在获取避免竞争的独占锁时打开(如果不存在则创建)文件