|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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命令行:
其它两个是一样的方法。
好,现在进入正题,
1,本地用cmd命令行连接数据库的方法:
回车会提示让输入密码,进入以后提示符变成:
然后就可以操作数据库了,注意,sql语句是以英文分号;结尾的,不像python直接回车就行,sql中直接回车会变成下面这样
->的意思是本条语句还没有结束,只是单纯的换了一行,
sql语句支持多行输入,要执行本条语句就在末尾添加英文分号;然后按回车键即可
退出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语句的关键字不区分大小写,但是依然建议使用大写,操作的对象用小写或者对象本身的格式。
一、显示当前所有库:
二、指定要操作的库(testdb是库名):
三、显示当前操作库的所有表:
以上命令均为cmd命令,一般不在python中使用。
四、创建库(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;
复制代码
未完待续。。。
欢迎各路大神来学习交流,帖子中有不足的地方一定要帮忙指出来哈 |
|