В настоящее время я пытаюсь реализовать скрипт python, который вставляет пару фиктивных значений в таблицу моей базы данных SQL (MariaDB). Я использую Stretch OS на моей малине Pi.
Сначала я успешно создал таблицу в существующей базе данных в MariaDB.
MariaDB [testdb]> CREATE table testdbtable (col1 char(1), col2 char(1), col3 char(1));
Query OK, 0 rows affected (0.12 sec)
Использование show tables;
Я вижу testdbtable в качестве моей созданной таблицы.
+------------------+
| Tables_in_testdb |
+------------------+
| testdbtable |
+------------------+
1 row in set (0.00 sec)
Использование show columns from testdbtable;
Я получил:
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| col1 | char(1) | YES | | NULL | |
| col2 | char(1) | YES | | NULL | |
| col3 | char(1) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
3 rows in set (0.00 sec)
Затем я создал скрипт python:
#!/usr/bin/python
import mysql.connector as mariadb
mariadb_connection = mariadb.connect(user='root', password='', database='testdb')
cursor = mariadb_connection.cursor()
cursor.execute("INSERT INTO testdbtable(col1, col2, col3) VALUES ('a', 'b', 'c')");
mariadb_connection.close()
Этот скрипт работает на терминале без каких-либо ошибок. Тем не менее, когда я запускаю MariaDB на терминале, я не вижу, чтобы значения фиктивных значений (т.е. a, b, c) были вставлены в эту таблицу из моего сценария:
MariaDB [testdb]> select * from testdbtable;
Empty set (0.00 sec)
Я ценю, может ли кто-нибудь дать мне какие-либо советы о том, что я мог сделать неправильно в моем сценарии?
Думаю, вам нужно внести изменения. См. Эту статью
https://mariadb.com/resources/blog/how-connect-python-programs-mariadb
cursor.execute("INSERT INTO testdbtable(col1, col2, col3) VALUES ('a', 'b', 'c')");
mariadb_connection.commit()
Using mariadb_connection.commit()
решило проблему. Изначально у меня сложилось впечатление, что в mariaDB будет автокоммит.autocommit=OFF
- по умолчанию используется режим, который вводит пользователей в эту ловушку.