已有184人关注
连接数据库出错
发表在Python图书答疑 2021-12-22 悬赏:20 学分 《Python编程入门指南》第12章 使用Python操作数据库 188页-188页
是否精华
版块置顶:

运行程序:

import pymysql

#打开数据库连接

db = pymysql.connect('localhost','root','root','test')

#创建游标对象

cursor = db.cursor()

#使用execute()函数执行SQL查询

cursor.execute('select version()')

#用fetchone()方法获取单条数据

data = cursor.fetchone()

print(data)

#关闭连接

cursor.close()

#关闭数据库

db.close()

出错:

Traceback (most recent call last):

  File "D:/Python/Python310/Doc/demo29.py", line 3, in <module>

    db = pymysql.connect('localhost','root','root','test')

TypeError: Connection.__init__() takes 1 positional argument but 5 were given

说明:我按照视频教授的方法自建了一个“test”数据库。按照书上的做法把数据库名改为“studyPython”,出同样的错误。请指教。

分享到:
精彩评论 4
无语_mrkj
学分:3155 LV11
2021-12-23
沙发

这个问题应该是新版本的PyMySQL 模块的数据库连接函数进行了修改,所以在使用时需要通过关键字形式给出,参考下面的代码:

打开数据库连接,host:主机名或IP;user:用户名;password:密码;database:数据库名称

db = pymysql.connect(host="localhost",user= "root",password= "root",database= "studyPython")


xghtz168
学分:162 LV4
2021-12-23
板凳

谢谢老师,所言极是。

xghtz168
学分:162 LV4
2021-12-23
地板

xghtz168 发表于2021-12-23 17:13

谢谢老师,所言极是。

还有一点不理解,当输入"studyPython" 会产生如下错误

Traceback (most recent call last):

  File "D:\Python\Python310\Doc\demo29.py", line 3, in <module>

    db = pymysql.connect(host='localhost',user='root',password='root',database='studyPython')

  File "D:\Python\Python310\lib\site-packages\pymysql\connections.py", line 353, in __init__

    self.connect()

  File "D:\Python\Python310\lib\site-packages\pymysql\connections.py", line 633, in connect

    self._request_authentication()

  File "D:\Python\Python310\lib\site-packages\pymysql\connections.py", line 907, in _request_authentication

    auth_packet = self._read_packet()

  File "D:\Python\Python310\lib\site-packages\pymysql\connections.py", line 725, in _read_packet

    packet.raise_for_error()

  File "D:\Python\Python310\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error

    err.raise_mysql_exception(self._data)

  File "D:\Python\Python310\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception

    raise errorclass(errno, errval)

pymysql.err.OperationalError: (1049, "Unknown database 'studypython'")

而输入自建在studyPython之下的数据库“test”就显示了正确答案:('5.7.36-log',)。在这个系统中studyPython的称谓是什么?

请指教。

game99258
学分:2266 LV10
2022-08-02
4L

主机是啥

首页上一页 1 下一页尾页 4 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照