马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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用exit2,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;
未完待续。。。
欢迎各路大神来学习交流,帖子中有不足的地方一定要帮忙指出来哈 |