Database does not update automatically with MySQL and Python
I am not certain, but I am going to guess you are using a INNODB table, and you haven't done a commit. I believe MySQLdb enable transactions automatically.
Call conn.commit()
before calling close
.
From the FAQ: Starting with 1.2.0, MySQLdb disables autocommit by default
Python mySQL Update, Working but not updating table
use
dbb.commit()
after
curb.execute ("UPDATE RadioGroups SET CurrentState=1 WHERE RadioID=11")
to commit all the changes that you 'loaded' into the mysql server
python database request not updating
You must either call MySQLdb.connections.Connection.commit
before executing a query or set autocommit
on the connection object.
Commiting before query
def readDbHeating():
global garageHeating
result = []
try:
# commit
mariadb_connection.commit()
cursor.execute ("SELECT * FROM heating WHERE id = '1'")
for reading in cursor.fetchall():
result.append (reading)
garageHeating = result[0][8]
except () as e:
print (e)
Autocommit when creating a connection
mariadb_connection = mariadb.connect(
host="localhost",
user="garage",
passwd="14Odiham",
database="mydb",
# Auto commit
autocommit=True
)
Autocommit after connection creation
mariadb_connection.autocommit(True)
Unable to update SQL database using python Pymysql
You have to execute before commit.
with connection.cursor() as cursor:
# Create a new record
sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
cursor.execute(sql, ('webmaster@python.org', 'very-secret'))
# connection is not autocommit by default. So you must commit to save
# your changes.
connection.commit()
https://github.com/PyMySQL/PyMySQL#example
MySQL view doesn't update when underlaying table changes across different users
Instead of logging out and logging back in, user 2 could simply commit their transaction.
MySQL InnoDB tables use transactions, requiring a BEGIN before one or more SQL statements, and either COMMIT or ROLLBACK afterwards, resulting in all your updates/inserts/deletes either happening or not. But there's a "feature" that results in an automatic BEGIN if not explicitly issued, and an automatic COMMIT when the connection is closed. This is why you see the changes after the other user closes the connection.
You should really get into the habit of explicitly beginning and committing your transactions, but there's also another way: set connection.autocommit = True, which will result in every sql update/insert/delete being wrapped in its own implicit transaction, resulting in the behavior you originally expected.
Don't take what I said above to be entirely factually correct, but it suffices to explain the fundamentals of what's going on and how to control it.
Python/MySQL: Table isn't getting updated
You are missing the commit, you must commit your queries at the end of your INSERT's
db.commit()
Related Topics
Styling Multi-Line Conditions in 'If' Statements
Matplotlib Table Formatting Column Width
Equivalent of a Python Dict in R
Using Perl, Python, or Ruby, How to Write a Program to "Click" on the Screen at Scheduled Time
Iterate Over Object Attributes in Python
How to Get Reproducible Results in Keras
How to Map Numeric Data into Categories/Bins in Pandas Dataframe
Understanding _Getitem_ Method
Efficient Calculation of Fibonacci Series
Pyqt Showing Video Stream from Opencv
Explaining Python's '_Enter_' and '_Exit_'
Dealing with the Class Imbalance in Binary Classification
Ruby Hash Equivalent to Python Dict Setdefault
Why Can't Python Find Shared Objects That Are in Directories in Sys.Path