【问题标题】:Python pymysql Unknown column in 'Field'字段中的Python pymysql未知列
【发布时间】:2013-12-06 17:08:45
【问题描述】:

所以基本上我要做的是创建一个将用户添加到数据库的函数。我正在使用 pymysql 连接到我的数据库。

import pymysql
from passlib.hash import sha256_crypt

try:
    conn = pymysql.connect(host='', unix_socket='/tmp/mysql.sock', user='', passwd='', db='')
    cur = conn.cursor()
except Exception as e:
    print("Fail", e)

def register(username, password):
    hashe = sha256_crypt.encrypt(password)
    cur.execute("INSERT INTO users (username, password) VALUES (%s, %s)" % (username, hashe))

register('Admin','password')

我得到的错误是

Traceback (most recent call last):
  File "db.py", line 20, in <module>
    register('Admin','password')
  File "db.py", line 16, in register
    cur.execute("INSERT INTO users (username, password) VALUES (%s, %s)" % (username, hashe))
  File "F:\Python33\lib\site-packages\pymysql\cursors.py", line 102, in execute
    result = self._query(query)
  File "F:\Python33\lib\site-packages\pymysql\cursors.py", line 202, in _query
    conn.query(q)
  File "F:\Python33\lib\site-packages\pymysql\connections.py", line 734, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "F:\Python33\lib\site-packages\pymysql\connections.py", line 845, in _read_query_result
    result.read()
  File "F:\Python33\lib\site-packages\pymysql\connections.py", line 1049, in read
    first_packet = self.connection._read_packet()
  File "F:\Python33\lib\site-packages\pymysql\connections.py", line 826, in _read_packet
    packet.check_error()
  File "F:\Python33\lib\site-packages\pymysql\connections.py", line 373, in check_error
    raise_mysql_exception(self.__data)
  File "F:\Python33\lib\site-packages\pymysql\err.py", line 117, in raise_mysql_exception
    _check_mysql_exception(errinfo)
  File "F:\Python33\lib\site-packages\pymysql\err.py", line 113, in _check_mysql_exception
    raise InternalError(errno, errorvalue)
pymysql.err.InternalError: (1054, "Unknown column 'Admin' in 'field list'")

似乎认为 Admin 是一个列,但我真的不知道如何,因为它应该是一个值。

【问题讨论】:

    标签: mysql python-3.x pymysql


    【解决方案1】:

    我不是 python 程序员,但你可以尝试将%s 值设置成这样:

    INSERT INTO users (username, password) VALUES ('%s', '%s')
    

    【讨论】:

    • 确实有效,谢谢!虽然,现在出现了另一个问题,但它似乎并没有用新信息更新数据库。
    • 执行查询后可能需要调用commit函数
    【解决方案2】:

    我遇到了类似的问题 - 数据库中列的名称可能有错字(相对于您的代码)

    【讨论】:

      猜你喜欢
      • 2018-01-05
      • 2015-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-09
      • 2023-03-14
      • 2020-10-27
      • 2017-09-03
      相关资源
      最近更新 更多