python - 带 Python 的 DB-API

标签 python mysql

我正在尝试使用 MySQL 连接器/Python 将一些数据插入到本地 MySQL 数据库中——这显然是在不中断 C 编译器的情况下将 MySQL 集成到 Python 3 中的唯一方法。

我尝试了包中的所有示例;那些执行者可以很好地输入数据。不幸的是,我尝试将任何内容写入我的表都失败了。

这是我的代码:

import mysql.connector


def main(config):
    db = mysql.connector.Connect(**config)
    cursor = db.cursor()

    stmt_drop = "DROP TABLE IF EXISTS urls"
    cursor.execute(stmt_drop)

    stmt_create = """
    CREATE TABLE urls (
        id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
        str VARCHAR(50) DEFAULT '' NOT NULL,
        PRIMARY KEY (id)
    ) CHARACTER SET 'utf8'"""
    cursor.execute(stmt_create)

    cursor.execute ("""
        INSERT INTO urls (str)
        VALUES
        ('reptile'),
        ('amphibian'),
        ('fish'),
        ('mammal')
        """)
    print("Number of rows inserted: %d" % cursor.rowcount)
    db.close()
if __name__ == '__main__':
    import config
    config = config.Config.dbinfo().copy()
    main(config)

输出:

Number of rows inserted: 4

我严格按照示例中提供的内容来编写我的代码,但我终其一生都无法找出问题所在。我在这里做错了什么?

使用脚本获取表数据工作正常,所以我不担心配置文件。我是数据库的根用户,所以权限也不成问题。

最佳答案

db.close() 之前,您需要添加一个 db.commit() 来提交您的更改!

关于python - 带 Python 的 DB-API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3648861/

相关文章:

python - OpenCV createCalibrateDebevec.process 给我 "dst is not a numpy array, neither a scalar"

mysql - `INSERT` 仅插入一行

mysql - 这个MySQL存储过程分层查询怎么做?

mysql - 使用包含来自数据透视表的匹配项的虚拟列从标签表中选择所有记录

python - 嵌套字典理解 : Too many values to unpack

python - 定义类时引用 __init__(self) 函数中的 self 约定理解实例对象

python - 我们什么时候应该实现 `__deepcopy__` ?

python - 如何使用 Ursina 实现敌人碰撞并更改 Ursina 中的子弹方向?

php - 迭代 mysql 结果进行比较

php - 加入三个不同的表