python连接mysql
# 查询语句try:
cursor = db.cursor()
sql = "select * from characters"
cursor.execute(sql)
result = cursor.fetchall()
for data in result:
print(data)
except Exception:
print("查询失败")
#插入语句
try:
sql = "insert into characters(name,gender,family,heraldry,father) values ('asd','男','jhf','sdf','vif')"
# 运行sql语句
cursor.execute(sql)
# 修改
db.commit()
# 关闭游标
cursor.close()
# 关闭连接
db.close()
print("victory!")
except:
print("false")
用pycharm和数据库已经连接上了,但是后面的增删改查语句都报错,不知道是代码问题还是什么。求大佬指点{:10_254:} 问题:Python连接MySQL后执行查询和插入语句时报错,想知道是代码问题还是其他原因。
回答:
根据您提供的代码,出现报错可能有以下几个原因:
1. 数据库连接问题:首先需要确保已经成功连接到MySQL数据库,可以检查一下连接参数是否正确、网络是否通畅。
2. 引入数据库模块:确认是否在代码中正确引入了MySQL数据库模块,例如import MySQLdb或import pymysql。
3. 数据库操作对象:确认是否创建了数据库操作对象,如db = MySQLdb.connect(host, user, password, db)或db = pymysql.connect(host, user, password, db)。
4. SQL语句格式问题:检查SQL语句的格式是否正确,包括表名、列名、语法等。可以使用数据库客户端工具测试一下SQL语句是否有效。
5. 事务提交:在插入或修改数据后,需要通过db.commit()提交事务,这样才能将修改保存到数据库中。
您可以按照以上几点逐一检查代码,看看是否能解决报错问题。如果还有其他问题,请提供具体的错误信息,以便更好地帮助您解决问题。 你的代码片段看起来没有什么明显的错误,但是它没有展示如何建立连接到MySQL的部分,也没有显示错误信息,所以很难判断具体的问题。基本的Python连接到MySQL数据库的方法是使用 mysql-connector-python 这个库。如果你还没有这个库,可以使用pip进行安装:
pip install mysql-connector-python
下面是一个完整的示例代码,你可以试试看:
import mysql.connector
try:
# 创建连接
db = mysql.connector.connect(
host="localhost",# 数据库主机地址
user="yourusername",# 数据库用户名
passwd="yourpassword",# 数据库密码
database="mydatabase"# 数据库名称
)
cursor = db.cursor()
# 查询语句
sql = "select * from characters"
cursor.execute(sql)
result = cursor.fetchall()
for data in result:
print(data)
# 插入语句
sql = "insert into characters(name,gender,family,heraldry,father) values ('asd','男','jhf','sdf','vif')"
cursor.execute(sql)
db.commit()
print("插入成功!")
except mysql.connector.Error as error:
print("操作失败,错误信息:{}".format(error))
finally:
if db.is_connected():
cursor.close()
db.close()
print("数据库连接已关闭。")
你需要把 yourusername ,yourpassword ,mydatabase 换成你自己的MySQL的用户名,密码和数据库名称。同时检查你的主机地址是否正确,默认是本地数据库时,主机地址填 localhost 。
如果你运行这段代码后还是有错误,你可以把错误信息贴出来,这样可以更好的帮助你定位问题。 isdkz 发表于 2023-7-5 17:33
你的代码片段看起来没有什么明显的错误,但是它没有展示如何建立连接到MySQL的部分,也没有显示错误信息, ...
import pymysql
db = pymysql.connect(host='localhost',
user='root',
password='******',
database='game_of_thrones')
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute()方法执行 SQL 查询
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()
print("数据库连接成功!")
# 关闭数据库连接
db.close()
这个是连接的代码,错误信息软件也没显示。 isdkz 发表于 2023-7-5 17:33
你的代码片段看起来没有什么明显的错误,但是它没有展示如何建立连接到MySQL的部分,也没有显示错误信息, ...
操作失败,错误信息:2055: Lost connection to MySQL server at 'localhost:3306', system error: 1 no ciphers available (_ssl.c:1002)
Traceback (most recent call last):
File "D:\pythonProject\main.py", line 31, in <module>
if db.is_connected():
^^
NameError: name 'db' is not defined
Process finished with exit code 1
用这段代码报这个错 ZXPoo 发表于 2023-7-5 18:02
操作失败,错误信息:2055: Lost connection to MySQL server at 'localhost:3306', system error: 1
你的错误信息中表示“丢失了与MySQL服务器在'localhost:3306'的连接,系统错误: 1 没有可用的密码(_ssl.c:1002)”。这个错误表明你在尝试与MySQL服务器进行SSL连接,但可能由于某种原因(可能是缺少必要的SSL密码套件)无法建立连接。
解决这个问题的一种方法是在你的MySQL连接代码中显式地禁用SSL。你可以通过向 mysql.connector.connect 函数添加一个 ssl_disabled 参数来实现这一点。
这是修改后的代码:
import mysql.connector
try:
# 创建连接
db = mysql.connector.connect(
host="localhost",# 数据库主机地址
user="yourusername",# 数据库用户名
passwd="yourpassword",# 数据库密码
database="mydatabase",# 数据库名称
ssl_disabled="True"# 禁用SSL连接
)
cursor = db.cursor()
# 查询语句
sql = "select * from characters"
cursor.execute(sql)
result = cursor.fetchall()
for data in result:
print(data)
# 插入语句
sql = "insert into characters(name,gender,family,heraldry,father) values ('asd','男','jhf','sdf','vif')"
cursor.execute(sql)
db.commit()
print("插入成功!")
except mysql.connector.Error as error:
print("操作失败,错误信息:{}".format(error))
finally:
if 'db' in locals() or 'db' in globals():
if db.is_connected():
cursor.close()
db.close()
print("数据库连接已关闭。")
这段代码添加了一个 ssl_disabled="True" 参数来显式地禁用SSL连接。同时,也增加了一个检查 db 是否定义的判断,防止在 db 未定义的情况下执行 db.is_connected() 引起 NameError 。
希望这可以帮助你解决问题。 isdkz 发表于 2023-7-5 18:04
你的错误信息中表示“丢失了与MySQL服务器在'localhost:3306'的连接,系统错误: 1
成功了。感谢感谢{:5_106:}
那这样写的话删除和修改的代码应该怎么写呢? ZXPoo 发表于 2023-7-5 18:16
成功了。感谢感谢
那这样写的话删除和修改的代码应该怎么写呢?
删除和修改的操作跟插入操作类似,你只需要将 SQL 语句改为你想要执行的删除或修改操作即可。以下是一些示例:
删除
try:
sql = "DELETE FROM characters WHERE name = 'asd'"
cursor.execute(sql)
db.commit()
print("删除成功!")
except mysql.connector.Error as error:
print("删除失败,错误信息:{}".format(error))
修改
try:
sql = "UPDATE characters SET name = 'newname' WHERE name = 'asd'"
cursor.execute(sql)
db.commit()
print("更新成功!")
except mysql.connector.Error as error:
print("更新失败,错误信息:{}".format(error))
使用 pymysql 库进行连接时,你可以使用 ssl 参数来禁用 SSL 连接,代码如下:
import pymysql
try:
# 创建连接
db = pymysql.connect(
host="localhost",# 数据库主机地址
user="yourusername",# 数据库用户名
passwd="yourpassword",# 数据库密码
db="mydatabase",# 数据库名称
ssl={'ssl': {'cipher': 'DHE-RSA-AES256-SHA'}}
)
cursor = db.cursor()
# 查询语句
sql = "select * from characters"
cursor.execute(sql)
result = cursor.fetchall()
for data in result:
print(data)
# 插入语句
sql = "insert into characters(name,gender,family,heraldry,father) values ('asd','男','jhf','sdf','vif')"
cursor.execute(sql)
db.commit()
print("插入成功!")
except pymysql.Error as error:
print("操作失败,错误信息:{}".format(error))
finally:
cursor.close()
db.close()
print("数据库连接已关闭。")
这个代码中,我增加了一个 ssl 参数,设置了一个空的SSL上下文来禁用SSL连接。注意,使用 pymysql 库时,数据库的参数名应该是 db 而不是 database 。
以上代码仅供参考,你需要根据实际情况进行修改。如果出现问题,可以查看错误信息来进行调试。 isdkz 发表于 2023-7-5 18:29
删除和修改的操作跟插入操作类似,你只需要将 SQL 语句改为你想要执行的删除或修改操作即可。以下是一些 ...
非常感谢{:10_281:}
页:
[1]