我这里用的是Navicat来进行手工连接数据库的,只要是可以连接数据库的软件都可以
连接成功后,可以打开对应的数据库下的表查看数据
pymysql是第三方库,所以需要安装pip install pymysql
安装后导入pymysql包就可以使用了,import pymysql
数据库的操作步骤:
import pymysql # 建立连接 host = 'api.lemonban.com' port = 3306 username = 'future' password = '123456' db_name = 'futureloan' # 得到连接对象 connection = pymysql.connect(host=host, port=port, user=username, password=password, database=db_name) # 获取游标对象,就相当于读取数据库内容时的光标 cursor = connection.cursor() print(cursor) # 执行sql语句(最好是不要一次取太多条数据,不然会很慢) sql = 'select * from member limit 5;' cursor.execute(sql) # 获取结果 # 得到sql语句查询的一条数据 data1 = cursor.fetchone() print(data1) # 得到sql语句查询的多条数据 data = cursor.fetchall() print(data)
运行结果:
查询一条数据和查询多条数据代码位置互换,得到的结果
因为先得到了5条数据,光标已经在第5条数据后面了,sql语句只查询了5条数据,因此再查询一条数据时显示None
注意:尽量避免使用一个游标进行多次操作
修改后的代码如下:
import pymysql # 建立连接 host = 'api.lemonban.com' port = 3306 username = 'future' password = '123456' db_name = 'futureloan' # 得到连接对象 connection = pymysql.connect(host=host, port=port, user=username, password=password, database=db_name) # 获取游标对象,就相当于读取数据库内容时的光标 cursor = connection.cursor() print(cursor) # 执行sql语句(最好是不要一次取太多条数据,不然会很慢) sql = 'select * from member limit 5;' cursor.execute(sql) # 获取结果 # 得到sql语句查询的多条数据 data = cursor.fetchall() print(data) # 获取第二个游标并执行sql语句,得到查询结果 cursor2 = connection.cursor() sql = 'select * from member limit 5;' cursor2.execute(sql) # 得到sql语句查询的一条数据 data1 = cursor2.fetchone() print(data1) # 关闭游标 cursor.close() cursor2.close() # 关闭连接 connection.close()
运行结果
注意:通常不会同时使用两个游标的
import pymysql class DBhandler(): def __init__(self, host='api.lemonban.com', port=3306, username='future', password='123456', db_name='futureloan'): # 得到一个连接对象 # 注意connection是类属性,前面一定要加self self.connection = pymysql.connect(host=host, port=port, user=username, password=password, database=db_name) def qurey_one(self, sql): # 查询一条数据 # 得到游标 cursor = self.connection.cursor() # 提交(更新数据库状态) self.connection.commit() # 执行sql语句 cursor.execute(sql) # 得到查询结果 data = cursor.fetchone() # 关闭游标 cursor.close() return data def qurey_all(self, sql): # 查询多条记录 cursor = self.connection.cursor() self.connection.commit() cursor.execute(sql) data = cursor.fetchall() cursor.close() return data def close(self): self.connection.close() # 简单的测试代码(只有右击运行时才会运行,其他模块导入时,不会执行此代码) if __name__ == '__main__': db = DBhandler() res = db.qurey_one('select * from member limit 5;') print(res) # 一定要关闭连接 db.close()
运行结果:
注意:
commit()提交,更新数据库状态,相当于多个人同时操作数据库时,你如果不更新拿到的数据不是最新的
一定要进行游标关闭,连接关闭