与Python交互

python3模块名:pymysql

conda install pymysql

conda install sqlalchemy

python2模块名:MySQLdb

  1. import pymysql
  2. # 1、创建与数据库连接对象
  3. db = pymysql.connect(host='localhost', user='haoen110', password='123',
  4. database='db4', charset='utf8')
  5. # 2、利用db方法创建游标对象
  6. cur = db.cursor()
  7. # 3、利用游标对象execute()方法执行SQL命令
  8. cur.execute("insert into sheng values\
  9. (16,300000,'台湾省');")
  10. # 4、提交到数据库执行
  11. db.commit()
  12. print("OK!")
  13. # 5、关闭游标对象
  14. cur.close()
  15. # 6、断开数据库连接
  16. db.close()
  1. +----+--------+-----------+
  2. | id | s_id | s_name |
  3. +----+--------+-----------+
  4. | 1 | 130000 | 河北省 |
  5. | 2 | 140000 | 陕西省 |
  6. | 3 | 150000 | 四川省 |
  7. | 4 | 160000 | 广东省 |
  8. | 5 | 170000 | 山东省 |
  9. | 6 | 180000 | 湖北省 |
  10. | 7 | 190000 | 河南省 |
  11. | 8 | 200000 | 海南省 |
  12. | 9 | 200001 | 云南省 |
  13. | 10 | 200002 | 山西省 |
  14. | 16 | 300000 | 台湾省 |
  15. +----+--------+-----------+

pymysql 使用流程

1、建立数据库连接db = pymysql.connect(...)

2、创建游标对象cur = db.cursor()

3、游标方法cur.execute("insert ...")

4、提交到数据库db.commit()

5、关闭游标对象cur.close()

6、断开数据库连接db.close()

connect对象

  • 建立数据库连接db = pymysql.connect(...)

    • host:主机地址,本地 localhost
    • port:端口号,默认3306
    • user:用户名
    • password:密码
    • database:库
    • charset:编码方式,推荐使用utf8

数据库连接对象(db)的方法

  • db.close() 关闭连接
  • db.commit() 提交到数据库执行
  • db.rollback() 回滚
  • cur = db.cursor() 返回游标对象,用于执行SQL具体SQL命令

游标对象(cur)的方法

  • 创建游标对象cur = db.cursor()

    • cur.execute(SQL命令,[列表]) 执行SQL命令
    • cur.close() 关闭游标对象
    • cur.fetchone() 获取第一条数据
      • 是一个元组(1,100001,"河北省")
    • cur.fetchone() 获取第一条数据
    • cur.fetchmany(n) 获取n条数据
    • cur.fetchall() 获取所有记录
  1. import pymysql
  2. # 1、创建与数据库连接对象
  3. db = pymysql.connect(host='localhost', user='haoen110', password='123',
  4. database='db4', charset='utf8')
  5. # 2、利用db方法创建游标对象
  6. cur = db.cursor()
  7. # 3、利用游标对象execute()方法执行SQL命令
  8. try:
  9. sql_select = "select * from sheng"
  10. cur.execute(sql_select)
  11. data1 = cur.fetchone()
  12. print(data1)
  13. print("*"*10)
  14. data2 = cur.fetchmany(3)
  15. for m in data2:
  16. print(m)
  17. print("*"*10)
  18. data3 = cur.fetchall()
  19. for m in data3:
  20. print(m)
  21. print("*"*10)
  22. except Exception as e:
  23. db.rollback()
  24. print("出现错误,已回滚", e)
  25. # 4、提交到数据库执行
  26. db.commit()
  27. print("OK!")
  28. # 5、关闭游标对象
  29. cur.close()
  30. # 6、断开数据库连接
  31. db.close()
  1. (1, 130000, '河北省')
  2. **********
  3. (2, 140000, '陕西省')
  4. (3, 150000, '四川省')
  5. (4, 160000, '广东省')
  6. **********
  7. (5, 170000, '山东省')
  8. (6, 180000, '湖北省')
  9. (7, 190000, '河南省')
  10. (8, 200000, '海南省')
  11. (9, 200001, '云南省')
  12. (10, 200002, '山西省')
  13. (16, 300000, '台湾省')
  14. **********
  15. OK!

参数化

  1. # 插入数据
  2. import pymysql
  3. # 1、创建与数据库连接对象
  4. db = pymysql.connect(host='localhost', user='haoen110', password='123',
  5. database='db4', charset='utf8')
  6. # 2、利用db方法创建游标对象
  7. cur = db.cursor()
  8. # 3、利用游标对象execute()方法执行SQL命令
  9. s_id = input("请输入省的编号:")
  10. name = input("请输入省的名字:")
  11. try:
  12. sql_insert = "insert into sheng(s_id,s_name) values(%s,%s);"
  13. cur.execute(sql_insert, [s_id, name])
  14. print("插入成功!")
  15. except Exception as e:
  16. db.rollback()
  17. print("出现错误,已回滚", e)
  18. # 4、提交到数据库执行
  19. db.commit()
  20. print("OK!")
  21. # 5、关闭游标对象
  22. cur.close()
  23. # 6、断开数据库连接
  24. db.close()
  1. 请输入省的编号:999
  2. 请输入省的名字:haha
  3. 插入成功!
  4. OK!
  5. +----+--------+-----------+
  6. | id | s_id | s_name |
  7. +----+--------+-----------+
  8. | 1 | 130000 | 河北省 |
  9. | 2 | 140000 | 陕西省 |
  10. | 3 | 150000 | 四川省 |
  11. | 4 | 160000 | 广东省 |
  12. | 5 | 170000 | 山东省 |
  13. | 6 | 180000 | 湖北省 |
  14. | 7 | 190000 | 河南省 |
  15. | 8 | 200000 | 海南省 |
  16. | 9 | 200001 | 云南省 |
  17. | 10 | 200002 | 山西省 |
  18. | 16 | 300000 | 台湾省 |
  19. | 17 | 999 | haha |
  20. +----+--------+-----------+

自己写封装

  1. from pymysql import *
  2. class Mysqlpython:
  3. def __init__(self, database, host='localhost',
  4. user='haoen110', password='123',
  5. port=3306, charset='utf8'):
  6. self.host = host
  7. self.user = user
  8. self.password = password
  9. self.port = port
  10. self.charset = charset
  11. self.database = database
  12. def open(self):
  13. self.db = connect(host=self.host,
  14. user=self.user,
  15. port=self.port,
  16. database=self.database,
  17. password=self.password,
  18. charset=self.charset)
  19. self.cur = self.db.cursor()
  20. def close(self):
  21. self.cur.close()
  22. self.db.close()
  23. def zhixing(self,sql,L=[]): # pymysql.execute(sql)
  24. try:
  25. self.open()
  26. self.cur.execute(sql,L)
  27. self.db.commit()
  28. print("ok")
  29. except Exception as e:
  30. self.db.rollback()
  31. print("Failed",e)
  32. self.close()
  33. def all(self,sql,L=[]):
  34. try:
  35. self.open()
  36. self.cur.execute(sql,L)
  37. result = self.cur.fetchall()
  38. return result
  39. except Exception as e:
  40. print("Failed",e)
  41. self.close()
  42. # 创建数据库连接对象
  43. # sqlh = Mysqlpython("db4")
  44. # sql_insert = "insert into sheng(s_id,s_name) values(666,'jjj');"
  45. # sqlh.zhixing(sql_insert)
  46. sql_select = "select * from sheng;"
  47. data = sqlh.all(sql_select)
  48. print(data)
  1. ok
  2. ((1, 130000, '河北省'), (2, 140000, '陕西省'), (3, 150000, '四川省'), (4, 160000, '广东省'), (5, 170000, '山东省'), (6, 180000, '湖北省'), (7, 190000, '河南省'), (8, 200000, '海南省'), (9, 200001, '云南省'), (10, 200002, '山西省'), (16, 300000, '台湾省'), (17, 999, 'haha'), (18, 666, 'jjj'))

自制登录系统

  1. create table user(
  2. username varchar(20),
  3. password char(40)
  4. );
  5. insert into user values("SHE","7c4a8d09ca3762af61e59520943dc26494f8941b"); # sha1加密的123456
  1. from hashlib import sha1
  2. uname = input("请输入用户名:")
  3. pwd = input("请输入密码:")
  4. # 用sha1给pwd加密
  5. s1 = sha1() # 创建sha1加密对象
  6. s1.update(pwd.encode("utf8")) # 指定编码
  7. pwd2 = s1.hexdigest() # 返回16进制加密的结果
  8. sqlh = Mysqlpython("db4")
  9. select = "select password from user where username=%s;"
  10. result = sqlh.all(select,[uname])
  11. print(result) # 打印出来看看
  12. if len(result) == 0:
  13. print("用户名不存在")
  14. elif result[0][0] == pwd2:
  15. print("登录成功")
  16. else:
  17. print("密码错误")
  1. 请输入用户名:SHE
  2. 请输入密码:123456
  3. (('7c4a8d09ca3762af61e59520943dc26494f8941b',),)
  4. 登录成功

ORM (Object Relation Mapping 对象关系映射)

  • 定义:

    • 把对象模型映射到MySQL数据库中
  • sqlalchemy模块安装

    • 示例:

      1. class User(Base):
      2. __tablename__="t1" # 声明要创建的表名
      3. id = Column(Integer, primary+key=True)
      4. name = Column(String(20))
      5. # 解释:User 一张表,id name
  1. from sqlalchemy import create_engine
  2. from sqlalchemy.ext.declarative import declarative_base
  3. from sqlalchemy import Column,Integer,String
  4. engine = create_engine("mysql+pymysql://haoen110:123@localhost/db4",encoding="utf8")
  5. Base = declarative_base() # orm基类
  6. class User(Base): # 继承Base基类
  7. __tablename__ = "t123"
  8. id = Column(Integer,primary_key=True)
  9. name = Column(String(20))
  10. address = Column(String(40))
  11. Base.metadata.create_all(engine)
  1. +---------+-------------+------+-----+---------+----------------+
  2. | Field | Type | Null | Key | Default | Extra |
  3. +---------+-------------+------+-----+---------+----------------+
  4. | id | int(11) | NO | PRI | NULL | auto_increment |
  5. | name | varchar(20) | YES | | NULL | |
  6. | address | varchar(40) | YES | | NULL | |
  7. +---------+-------------+------+-----+---------+----------------+

MySQL和Python交互的更多相关文章

  1. mysql及python交互

    mysql在之前写过一次,那时是我刚刚进入博客,今天介绍一下mysql的python交互,当然前面会把mysql基本概述一下. 目录: 一.命令脚本(mysql) 1.基本命令 2.数据库操作命令 3 ...

  2. pymysql实现MySQL与Python交互

    常见MySQL操作 所需模块: pip3 install pymysql 查询(fetchone,fetchmany,fetchall): import pymysql #连接 con = pymys ...

  3. 数据库之MySQL与Python交互

    准备数据 创建数据表 -- 创建 "京东" 数据库 create database jing_dong charset=utf8; -- 使用 "京东" 数据库 ...

  4. MySql与python交互

    No1: 引入MySql:python2是Mysqldb,python3是pymysql No2: Connection对象 用于建立与数据库的连接 创建对象:调用connect()方法 conn=c ...

  5. Python全栈 MySQL 数据库(SQL命令大全、MySQL 、Python调用)

    为了梦想与了信仰    开局一张图   主要三个方面: 1.Linux终端命令 2.MySQL语句 3.Python调用   先删库 再跑路.....                         ...

  6. MysQL使用一与Python交互

    与python交互 在熟练使用sql语句的基础上,开始使用python语言提供的模块与mysql进行交互 这是我们在工作中大事要做的事 先学会sql是基础,一定要熟练编写sql语句 安装引入模块 安装 ...

  7. MySQL 存储引擎、锁、调优、失误与事务回滚、与python交互、orm

    1.存储引擎(处理表的处理器) 1.基本操作 1.查看所有存储引擎 mysql> show engines; 2.查看已有表的存储引擎 mysql> show create table 表 ...

  8. 开发使用mysql的一些必备知识点整理(四)与python交互

    与python交互 在熟练使用sql语句的基础上,开始使用python语言提供的模块与mysql进行交互 这是我们在工作中大事要做的事 先学会sql是基础,一定要熟练编写sql语句 安装引入模块 安装 ...

  9. MySQL——python交互

    与python交互之前我们需要安装一个MySQL的驱动模块Connector,这个驱动模块直接在cmd命令行输入 pip install mysql.connector 安装是否成功可以接着输入 py ...

随机推荐

  1. Windows7下修改pip源

    以下列举三种方式的pip源配置: 1. 设置环境变量PIP_CONFIG_FILE指向pip.ini源配置文件,pip.ini文件内容如下: [global] index-url = http://m ...

  2. ThinkPHP5如何修改默认跳转成功和失败页面

    ThinkPHP5如何修改默认跳转成功和失败页面 一.总结 一句话总结:直接修改默认跳转页面对应的模板文件的路径:'dispatch_success_tmpl' => APP_PATH . 'i ...

  3. js中常用的对象—String的属性和方法

    今天说一下,js中常用的内置对象——String对象它有以下几个常用的属性:lengthprototype 有以下几个常用的方法:parseInt()转换为数字parseFloat()转换为数字,支持 ...

  4. 利用日志文件恢复MYSQL数据库

    利用日志文件恢复MYSQL数据库 650) this.width=650;" onclick='window.open("http://blog.51cto.com/viewpic ...

  5. css大会站点顶部的一个特效

    看到http://css.w3ctech.com/ 上一个效果认为挺赞的. 然后学些了一下. demo地址:http://codepen.io/tianzi77/pen/mJaLWq html结构非常 ...

  6. 简单的横向ListView实现(version 3.0)

    版本号2仅仅是简单的实现了当手指按下的时候listView的Item向左移动一定的距离,并没有随着手指的左右移动而左右滚动.在这个版本号3.0中将会实现随着手指的移动而滚动的目标:当手指向左移动的时候 ...

  7. Visual Studio Code配置GoLang开发环境

    Visual Studio Code配置GoLang开发环境 在Visual Studio Code配置GoLang开发环境 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页: ...

  8. sql server存储过程调用C#编写的DLL文件

    新建C#类库,编译. 引用 using Microsoft.SqlServer.Server; 方法 [SqlFunction]public static int GenerateTxt(){ ... ...

  9. Codeforces Round #193 (Div. 2) 部分题解

    A:直接判断前三项是否相等 int main() { //FIN; //CHEAT; int n; cin>>n; getchar(); ]; gets(a); int len = str ...

  10. BZOJ3238: [Ahoi2013]差异(后缀数组)

    Description Input 一行,一个字符串S Output 一行,一个整数,表示所求值 Sample Input cacao Sample Output 54 解题思路: 看到lcp,想到了 ...