您的位置:首页 > 移动开发 > Android开发

Android+服务器上数据进行操作+mysql的增删改查

2018-01-30 13:50 1291 查看
我们都知道我们的数据都在数据库上

我们同样要对我们的数据进行操作,我们怎么搞呢

我们首先要知道mysql.db这个东西,这是我们链接数据库的包

然而我们发现这个东西一直报错,经过编者的仔细寻找,终于解决了

这里:我只说mac本的方法

第一步我们需要下载一个brew,打开终端输入命令:ruby -e "$(curl —insecure -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
第二步输入命令:brew install mysql

第三步命令:pip install MySQL-python==1.2.5

完成后我们打开我们的Python就不会报错了

我们开始我们的增删改查的操作附上代码:

select.py

#-*-coding:utf-8-*-
#导入mysql包
import MySQLdb
#打开数据库连接
#1.host主机的ip
#2.user数据库用户名
#3.passwd数据库密码
#4.db数据库名字
#5.port数据库端口号默认3306
#如果设置允许远程连接数据库,在mysql库里面,user表host字段内容改成%,同时刷新数据库flush privileges
host="39.107.102.34"
#数据库用户名
user="root"
#数据库密码
password="123456"
#数据库名字
database='qiezi'
#数据库端口号
port=3306
db=MySQLdb.connect(host,user,password,database,port)
#获取curse
curse=db.cursor()
#1.执行sql语句,返回所有的列使用*
# sql="select * from qiezzilogin where userId=1"
# curse.execute(sql)
# #获取列表
# persons=curse.fetchall()
# #for循环打印
# for person in persons:
#     print person[0],person[1],person[2],person[3]
#2.模糊查询所有,关键字段like ,这种情况下索引是起作用的,但是如果%放在前面索引就不会起作用的,索引会无效
sql="select * from qiezzilogin where username like 'zhangsan3000%'"
curse.execute(sql)
persons=curse.fetchall()
for person in persons:
print person[0],person[1],person[2],person[3]

#3.返回指定的列表,比如返回userId username
# sql="select userId,username from qiezzilogin where userId=1"
# curse.execute(sql)
# persons=curse.fetchall()
# for person in persons:
#     print person[0],person[1]
#4.模糊查询倒叙返回 关键字desc 顺序asc
#需要配合使用 order by 需要倒叙或者顺序的字段DESC|ASC 注意默认是升序返回
#倒叙
# sql="select * from qiezzilogin where username like 'zhangsan3000%'order by username DESC "
#同时满足两个条件的查询语句,同时返回数据
sql="select * from qiezzilogin where username='zhangsan1' and userId=2"
#只满足一个条件就返回数据
# sql="select * from qiezzilogin where username='zhangsan1' or userId=1 order by userId DESC "
staus=curse.execute(sql)
print staus
persons=curse.fetchall()
for person in persons:
print person[0],person[1],person[2],person[3]
insert.py
 
#-*- coding:utf-8 -*-

# 导入mysql
import MySQLdb

# host
host = '39.107.102.34'

# 用户名
user = 'root'

# 密码
pwd = '123456'

# 数据库
database = '1509E'

# 端口号
port = 3306

# 链接数据库
db = MySQLdb.connect(host,user,pwd,database,port)

# 或许游标
course = db.cursor()
#增加的sql语句
#格式 insert into 表明(增加
df99
的字段的顺序,也可以不写)values(字段)
sql="insert into apps values(0,'李四','www.baidu.com','CN')"
# sql="insert into qiezzilogin(username,password,token) VALUES ('李四1','123456','22222222222')"
try:
#执行增加
status=course.execute(sql)
print status
#提交
db.commit()
except:
#回滚
db.rollback()
#查询出来
sql1="select * from apps where app_name='李四'"
course.execute(sql1)
#查询数据
persons=course.fetchall()
for person in persons:
print person[0],person[1],person[2],person[3]

#关闭数据库
db.close()

delete.py
 
#-*- coding:utf-8 -*-

# 导入mysql
import MySQLdb

# host
host = '39.107.102.34'

# 用户名
user = 'root'

# 密码
pwd = '123456'

# 数据库
database = 'qiezi'

# 端口号
port = 3306

# 链接数据库
db = MySQLdb.connect(host,user,pwd,database,port)

# 或许游标
course = db.cursor()
#删除userId=0的用户名
#delete from 表 where需要删除的条件
sql="delete from qiezzilogin where userId=1"
try:
#执行删除语句
statue=course.execute(sql)
#1代表删除成功,0删除失败
print statue
db.commit()
except:
#如果没有删除成功,执行回滚
db.rollback()
#关闭数据库
db.close()

update.py
 
#-*- coding:utf-8 -*-

# 导入mysql
import MySQLdb

# host
host = '39.107.102.34'

# 用户名
user = 'root'

# 密码
pwd = '123456'

# 数据库
database = 'qiezi'

# 端口号
port = 3306

# 链接数据库
db = MySQLdb.connect(host,user,pwd,database,port)

# 或许游标
course = db.cursor()
#修改的关键字update 表名set 需要修改的字段='值'where 字段=该谁
# sql="update qiezzilogin set password=654321 where userId=1"
#同时更新多个字段
sql="update qiezzilogin set password=123456,token='111111111111'where userId=1"
try:
#执行修改
statue=course.execute(sql)
#修改有返回值,0代码修改失败,1代表修改成功
print statue
db.commit()
except:
#如果修改发生异常,执行回滚
db.rollback()
#查询出来看一下
sql_find="select * from qiezzilogin where userId=1"
course.execute(sql_find)
#返回数据
persons=course.fetchall()
for person in persons:
print  person[0],person[1],person[2],person[3]
db.close()

下面我们拓展点基础之外的数据库操作
union这个名词是两表合并默认就是去重,加个all就是不去重,这里我们需要在我们的数据库里创建两个表,表里的数据自己写(你可以去Python菜鸟教程里进行参考,哈哈哈)

 union.py
#-*- coding:utf-8 -*-

# 导入mysql
import MySQLdb

# host
host = '39.107.102.34'

# 用户名
user = 'root'

# 密码
pwd = '123456'

# 数据库
database = '1509E'

# 端口号
port = 3306

# 链接数据库
db = MySQLdb.connect(host,user,pwd,database,port)

# 或许游标
course = db.cursor()
# #两表合并注意UNION默认去重     All表示不去重
# sql="select id,country,url from Websites UNION select id,country,url from apps"
# #执行sql语句
# course.execute(sql)
# #获取数据
# places=course.fetchall()
# #使用for循环遍历
# for place in places:
#     print place[0],place[1],place[2]
#分组查询 关键字段 group by需要分组查询的字段 后面与having配置需要的条件
#查询 根据城市分组查询,并输出数量大于2的
#复合函数,统计数量的字段COUNT(字段)
sql="select country,COUNT(country) from Websites group by country HAVING count(country)>=2"
#执行sql
course.execute(sql)
#获取
citys=course.fetchall()
for city in citys:
print city[0],city[1]

左连接,右连接,内连接的使用
join.py
#-*- coding:utf-8 -*-

# 导入mysql
import MySQLdb

# host
host = '39.107.102.34'

# 用户名
user = 'root'

# 密码
pwd = '123456'

# 数据库
database = '1509E'

# 端口号
port = 3306

# 链接数据库
db = MySQLdb.connect(host,user,pwd,database,port)

# 或许游标
course = db.cursor()
# #1.左连接 取左表所有的记录,取右表和左表相同的记录
# sql="select a.runoob_id,a.runoob_title,a.runoob_author,a.submission_date,b.runoob_count from runoob_tbl a LEFT JOIN " \
#     "tcount_tbl b on a.runoob_author = b.runoob_author"
#执行sql语句
# #2.右连接: 取右表所有的记录,取左边和右表相同的记录
# sql="select a.runoob_id,a.runoob_title,b.runoob_author,a.submission_date,b.runoob_count from runoob_tbl a RIGHT JOIN " \
#        "tcount_tbl b on a.runoob_author = b.runoob_author"
#3.内连接 :取两表相同的记录
sql="select a.runoob_id,a.runoob_title,b.runoob_author,a.submission_date,b.runoob_count from runoob_tbl a inner JOIN " \
"tcount_tbl b on a.runoob_author = b.runoob_author"

course.execute(sql)
persons=course.fetchall()
for person in persons:
print  person[0],person[1],person[2],person[3],person[4]
 avg平均值在数据库的调用
avg.py
#-*- coding:utf-8 -*-

# 导入mysql
import MySQLdb

# host
host = '39.107.102.34'

# 用户名
user = 'root'

# 密码
pwd = '123456'

# 数据库
database = '1509E'

# 端口号
port = 3306

# 链接数据库
db = MySQLdb.connect(host,user,pwd,database,port)

# 或许游标
course = db.cursor()
# 1: 求每一个同学的平均成绩 group by name ,并且大于 80
# 2: 求各科的平均成绩
# 3: 求全部的平均成绩

#1.
# sql="select name,AVG(score) from score group by name having AVG(score)>80"
#2.
# sql="select subject,AVG(score) from score group by subject"
#3.
sql="select AVG(score) from score"
course.execute(sql)
students=course.fetchall()
for student in students:
# print student[0],student[1]
print student[0]
数据库的建表参考菜鸟教程。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: