pycharm中的mysql
1.环境配置
- 需要在自己的linux 中安装mariadb-server 程序(端口为3306),并且开启。
- 注意:不能进行网络的安全设定,因为通过网络来在pycharm中进行操作。
- 设定root用户登录mysql的密码
- 创建一个数据库
- 在pycharm中下载mysql模块
2.连接数据库并创建表
- 数据库连接对象
在python中可以使用pymysql.connect()方法创建Connection对象,该方法的常用参数如下:
对象 | 用法 |
---|---|
host | 连接的数据库服务器主机名,默认为本地主机(localhost);字符串类型(String) |
user | 用户名,默认为当前用户;字符串类型(String) |
passwd | 密码,无默认值;字符串类 (String) |
db | 数据库名称,无默认值;字符串类型(String) |
port | 指定数据库服务器的连接端口,默认为3306;整型(int) |
charset | 连接字符集;字符串类型(String) |
- Connection对象常用的方法
方法 | 说明 |
---|---|
cursor() | 使用当前连接创建并返回游标 |
commit() | 提交当前事务 |
rollback() | 回滚当前事务 |
close() | 关闭当前连接 |
cursor对象 | 用法 |
---|---|
execute() | 执行数据库查询或命令 |
executemany() | 插入多条 |
3.创建数据表
import pymysql
# 1.连接数据库
conn = pymysql.connect(host='localhost',
user='root',
password='123',
db='westos',
charset='utf8'
)
# 2.创建游标对象
cur = conn.cursor()
# 3.对数据库操作
######创建数据表#############
try:
create_sqli = 'create table hello (id int,name varchar(30));'
cur.execute(create_sqli)
except Exception as e:
print('创建数据表失败:',e)
else:
print('创建数据成功')
4.插入数据
用法 | 说明 |
---|---|
cur= conn.cursor() | conn表示连接数据库,对数据的操作需要通过cursor来实现 |
cur.execute(self, query, args) | 执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数 |
插入一条数据(提交数据)
import pymysql
# 1.连接数据库
conn = pymysql.connect(host='localhost',
user='root',
password='123',
db='westos',
charset='utf8',
autocommit='True'
)
# 2.创建游标对象
cur = conn.cursor()
# 3.对数据库操作
######插入数据
try:
inser_sqli = "insert into hello values(3,'apple');"
cur.execute(inser_sqli)
except Exception as e:
print('插入数据失败:',e)
else:
# 如果是插入数据 一定要提交的 不然数据库中找不到要插入的数据
conn.commit()
print('插入数据成功!!')
插入多条数据
方法1:
import pymysql
# 1.连接数据库
conn = pymysql.connect(host='localhost',
user='root',
password='123',
db='westos',
charset='utf8',
autocommit='True'
)
# 2.创建游标对象
cur = conn.cursor()
# 3.对数据库操作
#####插入多条数据
try:
info = [(i,i) for i in range(100,1000)]
# 第一种方式
inser_sqli = "insert into hello values(%d,'%s');"
for item in info:
print('insert语句:',inser_sqli %item)
cur.execute(inser_sqli %item)
except Exception as e:
print('插入多条数据失败:',e)
else:
print('插入多条数据成功')
方法2:
import pymysql
# 1.连接数据库
conn = pymysql.connect(host='localhost',
user='root',
password='123',
db='westos',
charset='utf8',
autocommit='True'
)
# 2.创建游标对象
cur = conn.cursor()
# 3.对数据库操作
#####插入多条数据
try:
info = [(i,i) for i in range(100,1000)]
# 第二种方式
inser_sqli = "insert into hello values('%s','%s');"
cur.executemany(inser_sqli, info)
except Exception as e:
print('插入多条数据失败:',e)
else:
print('插入多条数据成功')
4.查询数据
import pymysql
# 1.连接数据库
conn = pymysql.connect(host='localhost',
user='root',
password='123',
db='westos',
charset='utf8',
autocommit='True'
)
# 2.创建游标对象
cur = conn.cursor()
# 3.对数据库操作
#####查询数据库
sqli = 'select * from hello'
# 默认不返回查询结果集 返回的是数据记录数
result = cur.execute(sqli)
print(result)
a = cur.fetchone() #获取单条数据
print(a)
# 获取下一条查询结果集
print(cur.fetchone())
print(cur.fetchone())
# 获取指定个数查询结果集
print(cur.fetchmany(4))
# 取出数据库中剩余的数据
info = cur.fetchall()
print(info)
5.游标的移动
可以通过cursor.scroll(position, mode=“relative | absolute”)方法,来设置相对位置游标和绝对位置游标
- 当mode='absolute’时,代表绝对移动,value就代表移动的绝对位置,value=0就代表移动到位置0处,就是结果集开头,value=3就是移动到位置3处,也就是第4条记录处
- mode缺省值为’relative’,代表相对移动。当mode='relative’时,value就是移动的长度,value>0向后移动(从位置0移动到位置2),value<0向前移动(比如从位置2移动到位置0)
import pymysql
# 1.连接数据库
conn = pymysql.connect(host='localhost',
user='root',
password='123',
db='westos',
charset='utf8',
autocommit='True'
)
# 2.创建游标对象
cur = conn.cursor()
# 3.对数据库操作
#####查询数据库
sqli = 'select * from hello'
# # 默认不返回查询结果集 返回的是数据记录数
result = cur.execute(sqli)
print(cur.fetchmany(3))
print('移动到指针最开始的地方...')
cur.scroll(0,'absolute')
print(cur.fetchmany(3))
print(cur.fetchmany(2))
print(cur.fetchall())
cur.scroll(-2,mode='relative')
print(cur.fetchmany(2))