【问题标题】:How to execute database insert do MariaDB using Python?如何使用 Python 执行数据库插入执行 MariaDB?
【发布时间】:2018-10-28 05:59:36
【问题描述】:

我在向我的数据库表中插入数据时遇到问题。我正在使用 Python 和 MariaDB。与数据库的连接已打开并经过测试,我可以查询数据库,但无法确定插入语法。我找到了两种方法,但都不起作用。

insert = (
    "INSERT INTO ksiazka (ISBN, tytul, autor, rok_wydania, ilosc stron)"
    "VALUES (%s,%s,%s,%s,%s)"
)
dane = (ISBN, tytul, autor, rok_wydania, ilosc_stron)
cursor.execute(insert, dane)

或者这样:

cursor.execute("INSERT INTO ksiazka (ISBN, tytul, autor, rok_wydania, ilosc stron) VALUES (%s,%s,%s,%s,%s)", (ISBN, tytul, autor, rok_wydania, ilosc_stron))

执行时出现此错误:

Traceback(最近一次调用最后一次):文件 "C:\Users\jakub\AppData\Local\Programs\Python\Python36\lib\site-packages\mysql\connector\connection_cext.py", 第 377 行,在 cmd_query 中 raw_as_string=raw_as_string) _mysql_connector.MySQLInterfaceError:您的 SQL 语法有错误;检查与您的 MariaDB 服务器相对应的手册 在 'stron)VALUES 附近使用正确语法的版本 ('12345678','wertvfdg','3','1243','213')' 在第 1 行

在处理上述异常的过程中,又发生了一个异常:

Traceback(最近一次调用最后一次):文件 “C:/Users/jakub/PycharmProjects/biblioteka/sql_connector.py”,第 57 行, 在 cursor.execute(insert, dane) 文件 "C:\Users\jakub\AppData\Local\Programs\Python\Python36\lib\site-packages\mysql\connector\cursor_cext.py", 第 264 行,执行中 raw_as_string=self._raw_as_string) 文件 "C:\Users\jakub\AppData\Local\Programs\Python\Python36\lib\site-packages\mysql\connector\connection_cext.py", 第 380 行,在 cmd_query 中 sqlstate=exc.sqlstate) mysql.connector.errors.ProgrammingError: 1064 (42000): 你的 SQL 语法有错误;检查手册 对应于正确语法的 MariaDB 服务器版本 在 'stron)VALUES ('12345678','wertvfdg','3','1243','213')' 附近使用 第 1 行

【问题讨论】:

    标签: python mysql insert mariadb


    【解决方案1】:

    如果您的列名中有空格,则需要对其进行特殊处理,并且您必须对其进行转义:

    INSERT INTO ksiazka (ISBN, tytul, autor, rok_wydania, `ilosc stron`) ...
    

    这就是为什么列名中的空格很烦人,应该避免。

    【讨论】:

    • 我该死!该列名称中没有空格,它应该是 ilosc_stron,我更正并开始工作。谢谢你抓住那个。我的编辑在整个声明下划线,我没有看到那里没有 _。
    猜你喜欢
    • 1970-01-01
    • 2019-05-10
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 2018-08-15
    • 2018-09-24
    • 1970-01-01
    相关资源
    最近更新 更多