鱼C论坛

 找回密码
 立即注册
查看: 3404|回复: 3

[技术交流] Python连接MySQL数据库常用操作命令和方法

[复制链接]
发表于 2019-4-21 19:17:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
以下操作和命令在python 3.7.2和MySQL 8.0.15中通过(以下全部使用mysql,大小写混和着打太烦人),并且,以下内容全部在Windows系统win10企业版(ps:版本号我不知道从哪里看)中进行演示。

mysql从8.0以后的版本更换了新的默认密码验证插件(caching_sha2_password),经过我不停的试错才发现,对python3.7.2没有卵影响

mysql安装不再介绍,自行百度

python需要安装的模块有:
1、PyMySQL
2、mysql-connector
3、install mysql-connector-python
具体是需要全部还是需要其中的几个,我也不知道,反正中间过程挺曲折的 说多了都是泪。
安装方法:
cmd命令行:
pip install PyMySQL
其它两个是一样的方法。

好,现在进入正题,
1,本地用cmd命令行连接数据库的方法:
mysql -u root -p
回车会提示让输入密码,进入以后提示符变成:
mysql>
然后就可以操作数据库了,注意,sql语句是以英文分号;结尾的,不像python直接回车就行,sql中直接回车会变成下面这样
mysql> 
    -> 
    ->
->的意思是本条语句还没有结束,只是单纯的换了一行,
sql语句支持多行输入,要执行本条语句就在末尾添加英文分号;然后按回车键即可
退出mysql用exit
mysql> EXIT;
2,python中连接数据库的方法:
import pymysql

#打开数据库连接
#localhost是数据库的地址
#root是账号
#password是密码
#TESTDB是将要操作的库
db = pymysql.connect(
    'localhost',
    'root',
    'admin123321',
    'TESTDB')

#使用cursor()方法获取操作游标
cursor = db.cursor()

#SQL语句
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')

try:
    # 执行SQL语句
    cursor.execute(sql)
    # 向数据库提交
    db.commit()
    print('更新成功')
except:
    # 发生错误时回滚
    db.rollback()
    print('更新失败')
    
#断开数据库连接
db.close()
以上方法适合增删改,即没有返回数据,如果是查询数据:

Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。
fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
fetchall(): 接收全部的返回结果行.
rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。
将上方代码的第23行插入以下内容。
   # 获取所有记录列表
   results = cursor.fetchall()
   for row in results:
      fname = row[0]
      lname = row[1]
      age = row[2]
      sex = row[3]
      income = row[4]
       # 打印结果
      print ("fname=%s,lname=%s,age=%s,sex=%s,income=%s" % \
             (fname, lname, age, sex, income ))
3、下面是经常用到的操作数据库的命令:
注:没有特殊说明的就是cmd命令行和python中都能使用。虽然sql语句的关键字不区分大小写,但是依然建议使用大写,操作的对象用小写或者对象本身的格式。
一、显示当前所有库:
SHOW DATABASES;
二、指定要操作的库(testdb是库名):
USE testdb;
三、显示当前操作库的所有表:
SHOW TABLES;
以上命令均为cmd命令,一般不在python中使用。

四、创建库(testdb是库名):
CREATE DATABASE testdb

五、创建数据表,并添加一个自增主键id字段(数据表中列名称之为字段):
CREATE TABLE test_123(id BIGINT AUTO_INCREMENT PRIMARY KEY);
可能大家会有疑惑说,你这个test_123的表是在哪个库上建立的呢,是这样的,在cmd命令中,我们已经使用USE testdb指定了操作testdb这个库,在python中,连接的时候pymysql.connect中添加的参数已经包含了要操作的哪个库。

六、插入数据:
#cmd命令中,第一个括号的内容是字段,第二个括号的内容是数据,字段和数据位置要一一对应。
INSERT INTO test_123(first_name,last_name,age,sex,income) VALUES ('Mac', 'Mohan', 20, 'M', 2000);
#python中第一个括号的内容是字段,第二个括号的内容是数据(python中可以使用占位符%s),字段和数据位置要一一对应。
sql = "INSERT INTO test_123(first_name,last_name,age,sex,income) VALUES (%s,%s,%s,%s,%s)"
val = ('Mac', 'Mohan', 6, 'M', 2000)
cursor.execute(sql,val)

七、删除数据:
#cmd命令中,WHERE后面跟位置条件(AGE > 20)
DELETE FROM test_123 WHERE age > 20;
#python中,WHERE后面跟位置条件(AGE > 20)
sql = "DELETE FROM test_123 WHERE age > %s" % (20)
cursor.execute(sql)

八、更新数据:
#cmd命令中,UPDATE后跟数据表,SET后跟需要更新的数据,WHERE后跟位置条件
UPDATE test_123 SET age=age+1, WHERE sex='M';
#python中,UPDATE后跟数据表,SET后跟需要更新的数据,WHERE后跟位置条件
sql = "UPDATE test_123 SET age=age+1, WHERE sex='%c'" % ('M')
cursor.execute(sql)

九、查询数据:
#cmd命令中,*是需要查询的字段,test_123是需要的查询数据表,WHERE 后面跟的是位置条件
SELECT * FROM test_123 WHERE INCOME > 1000;
#python中,*是需要查询的字段,test_123是需要的查询数据表,WHERE 后面跟的是位置条件
sql = "SELECT * FROM test_123 WHERE INCOME > %s" % (1000)
cursor.execute(sql)
results = cursor.fetchall()

十、添加字段(列):
#cmd命令中,(在test_123表中添加列list_name)
ALTER TABLE test_123 ADD COLUMN list_name VARCHAR(10) NOT NULL;

十一、修改字段名(列名):
#cmd命令中,(在test_123表中把列list_name改为after_name)
ALTER TABLE test_123 CHANGE COLUMN list_name after_name VARCHAR(20) NOT NULL;

十二、删除字段(列):
#cmd命令中,(把表test_123中的字段list_name删除)
ALTER TABLE test_123 DROP COLUMN list_name;


未完待续。。。

欢迎各路大神来学习交流,帖子中有不足的地方一定要帮忙指出来哈

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-5-10 22:12:51 | 显示全部楼层
话说,大佬,不要断啊,接着发,顶
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-11 12:52:11 | 显示全部楼层
致良知 发表于 2019-5-10 22:12
话说,大佬,不要断啊,接着发,顶

我也是在一点一点的学习中,不要急。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-3-9 14:34:05 | 显示全部楼层
111111111
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 09:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表