cursor.execute('SELECT * FROM account WHERE username = %s AND password = %s', (username, password))执行后数据库数据未更新
时间: 2024-02-03 14:02:02 浏览: 293
`cursor.execute()`方法只会执行SQL语句,不会自动提交更改到数据库。如果你想要更新数据库,需要在执行完SQL语句后手动调用`connection.commit()`方法提交更改,其中`connection`是你的数据库连接对象。
示例代码:
```
cursor.execute('SELECT * FROM account WHERE username = %s AND password = %s', (username, password))
connection.commit() # 提交更改到数据库
```
如果你希望在执行SQL语句时自动提交更改到数据库,可以在创建数据库连接对象时指定`autocommit=True`参数。
示例代码:
```
import psycopg2
connection = psycopg2.connect(
host='your_host',
port=5432,
user='your_user',
password='your_password',
database='your_database',
autocommit=True # 自动提交更改到数据库
)
cursor = connection.cursor()
cursor.execute('SELECT * FROM account WHERE username = %s AND password = %s', (username, password))
```
相关问题
mysql查询语句如何绑定python程序中定义的变量SELECT * FROM user_roles_account WHERE account_id=
在Python中使用MySQL查询语句绑定变量时,需要使用参数化查询来防止SQL注入攻击,并且确保变量的正确传递。一种常见的做法是使用MySQL的游标对象(cursor)提供的预处理语句(prepared statements)功能。这里以`mysql-connector-python`库为例,介绍如何绑定变量:
1. 首先,需要建立数据库连接,并创建一个游标对象。
2. 然后,使用占位符`%s`(对于字符串类型)或其他适当的数据类型占位符,来准备SQL查询语句。
3. 接着,使用游标对象的`execute`方法,并传入SQL语句和变量作为参数。
4. 最后,可以使用`fetchall`或`fetchone`等方法来获取查询结果。
下面是一个具体的代码示例:
```python
import mysql.connector
# 连接数据库
conn = mysql.connector.connect(user='username', password='password', host='127.0.0.1', database='dbname')
cursor = conn.cursor()
# 定义变量
account_id = '123'
# 准备SQL语句,使用%s作为占位符
sql = "SELECT * FROM user_roles_account WHERE account_id=%s"
# 执行SQL语句,传递参数
cursor.execute(sql, (account_id,))
# 获取查询结果
results = cursor.fetchall()
# 输出结果
for result in results:
print(result)
# 关闭游标和连接
cursor.close()
conn.close()
```
请注意,如果你使用的数据库驱动支持其他占位符,比如使用`%s`来代表所有类型,或者使用特定的占位符比如`%(var)s`,请根据你的数据库驱动的文档来正确使用。
再结合上面代码,在xjdz包里,创建一个Account类,用来存储链接mysql数据库,用来实现登录注册功能,库名为oqcwxjdz,user表,有那么,和password两列
好的,下面是一个简单的Account类的代码,用于连接到MySQL数据库,并实现基本的登录和注册功能。请注意,这只是一个示例代码,您需要根据您的具体情况进行适当的修改:
```python
import mysql.connector
class Account:
def __init__(self):
self.db = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="oqcwxjdz"
)
self.cursor = self.db.cursor()
def login(self, username, password):
sql = "SELECT * FROM user WHERE username = %s AND password = %s"
val = (username, password)
self.cursor.execute(sql, val)
result = self.cursor.fetchone()
if result:
print("Login successful!")
else:
print("Invalid username or password.")
def register(self, username, password):
sql = "INSERT INTO user (username, password) VALUES (%s, %s)"
val = (username, password)
try:
self.cursor.execute(sql, val)
self.db.commit()
print("Registration successful!")
except:
self.db.rollback()
print("Registration failed.")
```
在上面的代码中,我们使用`mysql.connector`模块来连接到MySQL数据库。在构造函数中,我们传递了数据库连接参数,包括主机名、用户名、密码和数据库名。我们还创建了一个游标对象,以便执行SQL查询。
类中的`login`方法用于验证用户的登录凭据。我们使用`SELECT`查询从数据库中检索用户名和密码,如果找到匹配的记录,则登录成功。否则,我们会输出错误消息。
`register`方法用于注册新用户。我们使用`INSERT INTO`语句将新用户的用户名和密码插入到`user`表中。如果插入操作成功,则注册成功,否则输出错误消息。
阅读全文
相关推荐














