【问题标题】:Unable to insert values to mysql using python无法使用python将值插入mysql
【发布时间】:2013-07-16 11:40:58
【问题描述】:

我正在尝试使用 python 向 mysql 插入值,但代码不起作用,它返回一个空白页并且没有值写入数据库表中,请帮助我

import MySQLdb as mdb

con = mdb.connect('localhost', 'python', '123456', 'python');

cur = con.cursor()

cur.execute("INSERT INTO test VALUES('234','566789','rohan','rajesh','78979','Maths','25','50','75','P')")
cur.commit()

cur.close()
con.close()

【问题讨论】:

  • 请修正缩进。另外,这是您正在运行的全部代码吗?如果是,pythonsuccess 变量没有定义 - 所以,代码根本不起作用。另外,如果你使用with,你不需要在里面调用close()
  • 是的,这是我正在运行的全部代码,我是 python 新手,请先生给我一个简单的例子
  • 您是否了解这些INSERT 语句中的每一个都在创建一个新行,只填充一列,并且该行中所有其他列的默认值?这真的是你想要的吗?
  • 你觉得你在用with con:做什么?你认为python.commit() 是什么?编程不仅仅是把你在某处找到的线拼凑在一起。

标签: python mysql database python-2.7 insert


【解决方案1】:

您的 Python 字符串必须与普通 MySQL 语句中的完全一样,因此最好尝试在 MySQL 提示符下执行它以查看它返回的内容。不指定字段,例如

INSERT INTO FOO VALUES (4, 5, 6)

而不是

INSERT INTO FOO (X, Y, Z) VALUES (4, 5, 6)

将按照它们在表中定义的顺序插入值(如使用DESCRIBE 命令所示),但通常不是一个好主意,例如表的布局发生变化。

您需要确保所有字符串都有开头和结尾引号 - 您的 566789 字符串在您给出的示例中没有。此外,您将看似整数的内容作为字符串传递。如果它们在表中被定义为整数,则需要删除引号。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    试试这个:

    import MySQLdb as mdb
    
    con = mdb.connect(host='localhost', user='python', passwd='123456', db='python');
    
    cur = con.cursor()
    cur.execute("INSERT INTO test(ecode) VALUES('Manoj')")
    cur.execute("INSERT INTO test(htno) VALUES('Manoj')")
    cur.execute("INSERT INTO test(name) VALUES('Manoj')")
    cur.execute("INSERT INTO test(fathername) VALUES('Manoj')")
    cur.execute("INSERT INTO test(subcode) VALUES('Manoj')")
    cur.execute("INSERT INTO test(subject) VALUES('Manoj')")
    cur.execute("INSERT INTO test(internals) VALUES('Manoj')")
    cur.execute("INSERT INTO test(externals) VALUES('Manoj')")
    cur.execute("INSERT INTO test(total) VALUES('Manoj')")
    cur.execute("INSERT INTO test(result) VALUES('Manoj')")
    
    cur.commit()
    
    cursor.close()
    con.close()
    

    有几个问题:

    • 未定义python变量
    • 未定义success变量
    • MySQLdb 不支持上下文管理器

    不过,我不明白你为什么需要在不同的字段中插入具有Manoj 值的行。

    UPD,您的 sql 语法有错误(566789 之前缺少引号字符):

    cur.execute("INSERT INTO test VALUES('234','566789','rohan','rajesh','78979','Maths','25','50','75','P')")
    

    希望对您有所帮助。

    【讨论】:

    • 请按照我的做法修复您的connect 行。如何检查没有插入数据?
    • 脚本不会显示任何输出。有没有插入数据?请检查。
    • 缩进有问题吗??
    猜你喜欢
    • 2018-07-08
    • 2019-03-20
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    • 2011-11-01
    • 2015-01-22
    • 2020-07-18
    相关资源
    最近更新 更多