【问题标题】:PyMySQL Error inserting values into table. - PythonPyMySQL 将值插入表中时出错。 - Python
【发布时间】:2016-07-28 18:43:18
【问题描述】:

我正在尝试用 python 和 mysql 创建一个登录系统。我连接到数据库,但是当我尝试将值插入表时,它失败了。我不确定出了什么问题。我正在使用 python 3.5 和 PyMySQL 模块。

    #!python3
    import pymysql, sys, time
    try:
        print('Connecting.....')
        time.sleep(1.66)
        conn = pymysql.connect(user='root', passwd='root', host='127.0.0.1', port=3306, database='MySQL')
        print('Connection suceeded!')
    except:
        print('Connection failed.')
        sys.exit('Error.')

    cursor = conn.cursor()

    sql = "INSERT INTO login(USER, PASS) VALUES('test', 'val')"

    try:
        cursor.execute(sql)
        conn.commit()
    except:
        conn.rollback()
        print('Operation failed.')

    conn.close()

【问题讨论】:

  • 你能更好地描述“它失败了”这句话吗?怎么了?你有例外吗?
  • 另外,我对mysql解析器不太了解,但我通常会看到表名和括号之间有一个空格:"INSERT INTO login (USER, PASS) VALUES ('test', 'val')"
  • 不,我使用 try/except 语句处理了异常。如果我删除该语句,这就是我得到的 - (1054,“'字段列表'中的未知列'USER'”)
  • @k_user 如果您删除 except 块,您能分享一下您遇到的错误吗?
  • 当我删除 try/except 块时,我收到此错误 - pymysql.err.InternalError: (1054, "Unknown column 'USER' in 'field list'")

标签: python mysql python-3.x pymysql


【解决方案1】:

我认为这可能与连接中语句的顺序有关。根据 PyMySQL github(找到 here),正确的顺序是主机、端口、用户、密码、数据库。

【讨论】:

  • 值得怀疑——通过关键字调用时,默认参数应该能够以任意顺序提供。
【解决方案2】:

像这样:

user = input("User: ")
pass = input("Pass: ")
sql = "INSERT INTO login(USER, PASS) VALUES('%s', '%s')"%(user, pass)

顺便说一句,你应该像这样连接:

 conn = pymysql.connect(
    host='127.0.0.1',
    user='root',
    passwd='root',
    db='MySQL
    )

【讨论】:

    猜你喜欢
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 2014-12-07
    • 1970-01-01
    • 2022-12-15
    • 1970-01-01
    相关资源
    最近更新 更多