python之连接mysql数据库
使用python连接mysql数据库需要使用pymysql库。
没有安装的话在终端输入:pip install pymysql命令进行安装。
当然,连接数据库时一些连接信息需要有:数据库ip、端口、登录用户名、密码、数据库名字、字符集类型。
下面是连接数据后执行的一些基本操作。
首先需要创建表
import pymysql
connect=pymysql.connect(
host="192.168.0.170",
port=3306,
user="mysql",
password="123456",
database="study",
charset="utf8"
)
#连接mysql需要的信息有:ip,用户名,密码,数据库名字,端口号,字符集类型
cursor1=connect.cursor() #得到一个光标对象,确定sql再哪个位置执行
#默认是返回元组类型的数据,我喜欢用返回字典类型的,如下cursor2
cursor2=connect.cursor(cursor=pymysql.cursors.DictCursor) #注意DictCursor,DC必须大写
ct_sql='''
create table domain(
id int auto_increment PRIMARY KEY,
name VARCHAR (10) not NULL UNIQUE ,
age INT NOT NULL,
user VARCHAR (10) NOT NULL ,
password INT NOT NULL
)ENGINE=innodb DEFAULT charset=utf8;
'''
cursor2.execute(sql) #执行sql
result1=cursor2.fetchall() #取所有返回值
#result2=cursor2.fetchone() #取第一行数据作为返回值
#result3=cursor2.fetchmany(2) #取前两行数据作为返回值
print(result1) #打印出结果
cursor2.close() #关闭光标
connect.close() #断开连接
- 这里创建了domain表,有一些参数,方便接下来进行增删改查的操作。
insert into插入信息
import pymysql
connect=pymysql.connect(
host="192.168.0.170",
port=3306,
user="mysql",
password="123456",
database="study",
charset="utf8"
)
cursor=connect.cursor(cursor=pymysql.cursors.DictCursor)
sql="insert into domain (name,age,USER,password) VALUES ('耿恩',25,'gengen','123456');"
sql2="select * from domain;"
try:
cursor.execute(sql)
connect.commit() #涉及写的操作要进行提交,commit 一下
cursor.execute(sql2)
result=cursor.fetchall()
print(result[-1])
except Exception as e:
print(str(e))
finally:
cursor.close()
connect.close()
- 这里需要注意的是进行插入操作时要记得commit提交
获取最后插入数据的id&插入数据失败时回滚
import pymysql
connect=pymysql.connect(
host="192.168.0.170",
port=3306,
user="mysql",
password="123456",
database="study",
charset="utf8"
)
cursor=connect.cursor(cursor=pymysql.cursors.DictCursor)
sql=sql="insert into domain (name,age,USER,password) VALUES ('耿恩',25,'gengen','123456');"
try:
cursor.execute(sql)
connect.commit()
last_id=cursor.lastrowid #获取最后插入数据的id
print(last_id)
except Exception as e:
print(str(e))
connect.rollback() #失败时回滚
finally:
cursor.close()
connect.close()
- 这里获取最后一次插入数据的id,数据关联时会用到
批量插入信息
以下省略连接数据库的步骤
cursor=connect.cursor(cursor=pymysql.cursors.DictCursor)
sql = "INSERT INTO person(name, age) VALUES (%s, %s);"
data = [("aaa",111), ("bbb",222), ("ccc",333)]
try:
# 批量执行多条插入SQL语句
cursor.executemany(sql, data)
# 提交事务
conn.commit()
except Exception as e:
# 有异常,回滚事务
conn.rollback()
cursor.close()
conn.close()
- 这里需要注意的是
cursor.executemany()
的使用,如果仍使用**execute
** ,会提示:
not all arguments converted during string formatting
删除数据
sql='delete from domain where name=%s;'
cursor.execute(sql,[name])
name='耿恩'
- 学习%s的使用。
查询,做自动化数据对比的时候经常用到
sql="select * from course WHERE teacher_no=%s;"
cursor.execute(sql,[no])
results=cursor.fetchall()
for i in range(0,len(results)):
result=results[i]
print(result)
目前以下用法没使用过,当获取的表格数据中如果数据量非常大,我一般写sql语句进行删选,这里也记录一下,有些场景使用还是很方便的。后续在实战中遇到问题再进行补充记录。
以上信息参考虫洞小鳗鱼的博客进行学习的!
可以获取指定数量的数据
cursor.fetchmany(3)
光标按绝对位置移动1
cursor.scroll(1, mode=“absolute”)
光标按照相对位置(当前位置)移动1
cursor.scroll(1, mode=“relative”)