一.在pycharm2017 上实现python3.6与mysql数据库的连接
与其他的IDE不同,pycharm不需要额外下载mydqldb包等,pycharm里可以自动安装pymysql,功能与下载的mydqldb是一样的。
安装pycharm自带的pymysql
首先打开pycharm里的设置 settings->project->project Interpreter->双击击右面的pip-->在搜索框里输入pymysql-->然后选中版本点击install package,等一会提示successful就行了
安装的过程中可能会出现"ImportError: No module named setuptools"的错误提示,可以先在上面输入框中查找安装setuptools在安装PyMySQL3
数据库 MYSQLa
1.Python之连接数据库
import pymysql
# 获取连接对象conn,建立数据库的连接
def get_conn():
conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='root',db='school')
# db:表示数据库名称
# 进行连接数据库服务端(host 访问服务端的ip,user 访问服务端的用户,password访问服务端的用户密码,database 访问服务端的数据库,charset 访问时采用的编码方式)
return conn
2.Python之插入操作
import pymysql
def get_conn():
conn = pymysql.connect(host='localhost',port=3306, user='root', passwd='root', db='school') # db:表示数据库名称
return conn
def insert(sql):
conn = get_conn()
cur = conn.cursor()
result = cur.execute(sql)
print(result)
conn.commit()
cur.close()
conn.close()
if __name__ == '__main__':
sql = "INSERT INTO student VALUES('120','zhang','12');"
insert(sql)
在写sql语句的时候,需要避免直接写sql语句,而是采用占位符的方式来,防止sql的注入。
def insert(sql, args):
conn = get_conn()
cur = conn.cursor()
result = cur.execute(sql, args)
print(result)
conn.commit()
cur.close()
conn.close()
# 在写sql语句的时候,需要避免直接写sql语句,而是采用占位符的方式来,防止sql的注入。
# sql占位符形式实现
if __name__ == '__main__':
sql = 'INSERT INTO student VALUES(%s,%s,%s);'
insert(sql, ('2', 'wang', '10'))
下面代码均以占位符的形式实现sql语句。
import pymysql
def get_conn():
conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='root', db='school')
return conn
def insert_many(sql, args):
conn = get_conn()
cur = conn.cursor()
result = cur.executemany(query=sql, args=args)
print(result)
conn.commit()
cur.close()
conn.close()
if __name__ == '__main__':
sql = 'insert into student VALUES (%s,%s,%s)'
args = [('003', 'li', '11'), ('004', 'sun', '12'), ('005', 'zhao', '13')]
insert_many(sql=sql, args=args)
import pymysql
conn=pymysql.connect(host='localhost',user='root',password='root',database='school')
## 连接mysql数据库并创建句柄 (host连接的机器,user连接的用户,password连接的密=密码,database连接的数据库 )
coursor=conn.cursor()
##创建游标
ste=coursor.execute('insert into student(Sno,Sname,Ssex) VALUES (000,212,11)')
##通过游标执行SQL命令语句
conn.commit()
##进行提交(在对数据库中的内容进行修改时,需要进行提交内容方可进行保存)
coursor.close()
##关闭游标执行操作
conn.close()
##断开连接
3.Python之更新操作
import pymysql
def get_conn():
conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='root',db='school') # db:表示数据库名称
return conn
def update(sql,args):
conn = get_conn()
cur = conn.cursor()
result = cur.execute(sql,args)
print(result)
conn.commit()
cur.close()
conn.close()
if __name__ == '__main__':
sql = 'UPDATE student SET Sname=%s WHERE Sno = %s;'
args = ('wangprince', '2')
update(sql, args)
4.Python之删除操作
import pymysql
def get_conn():
conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='root',db='school') # db:表示数据库名称
return conn
def delete(sql,args):
conn = get_conn()
cur = conn.cursor()
result = cur.execute(sql,args)
print(result)
conn.commit()
cur.close()
conn.close()
if __name__ == '__main__':
sql = 'DELETE FROM student WHERE Sno = %s;'
args = ('2',) # 单个元素的tuple写法
delete(sql,args)
5.Python之查询操作
import pymysql
def get_conn():
conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='root', db='school')
return conn
def query(sql,args):
conn = get_conn()
cur = conn.cursor()
cur.execute(sql,args)
results = cur.fetchall()
print(type(results)) # 返回 tuple元组类型
for row in results:
print(row)
id = row[0]
name = row[1]
age = row[2]
print('Sno: ' + str(id) + ' Sname: ' + name + ' Ssex: ')
pass
conn.commit()
cur.close()
conn.close()
if __name__ == '__main__':
sql = 'SELECT * FROM student;'
query(sql,None)
附加
一.插入操作
import pymysql
conn = pymysql.connect(host='localhost', port=3306, db='school', user='root', passwd='root', charset='utf8')
cur = conn.cursor()
sql = "insert into student(Sno,Sname,Ssex) values('100','黄蓉','woman')"
cur.execute(sql)
conn.commit()
cur.close()
conn.close()
二.查询操作
execute方法:执行SQL、将结果从数据为获取到客户端:
fetch*()方法:移动rownumber,返回数据。
import pymysql
conn = pymysql.connect(host='localhost', port=3306, db='school', user='root', passwd='root', charset='utf8')
cur = conn.cursor()
sql = "select Sno,Sname,Ssex from student"
cur.execute(sql)
# result = cur.fetchone()
result = cur.fetchall()
for data in result:
print(data)
cur.close()
conn.close()