项目是软硬件结合,在缺少设备的情况,需要通过接口来模拟实现与设备的交互,其中就需要通过从数据库读取商品的ID信息

出于安全考虑  现在很多数据库都不允许通过直接访问,大多数是通过SSH

SSH : 数据库开放哪台机器访问,就通过哪台机器的SSH跳过去

例如:数据库在A机器,只能通过B来访问,本机C来链接B链接A的数据库

链接数据库与简单操作:

链接数据库:
  1. import MySQLdb
  2. #打开数据库链接
  3. lcDB = MySQLdb.connect("127.0.0.1", "%”,"","go" )

简单数据库操作:

创建数据库表:
  1. import MySQLdb
  2. #打开数据库链接
  3. lcDB = MySQLdb.connect("127.0.0.1", "root","","test" )
  4. #使用cursor()方法获取操作游标
  5. cursor = lcDB.cursor()
  6.  
  7. #使用execute方法执行SQL语句
  8. cursor.execute('select version()') #查询MYSQL版本
  9.  
  10. #使用fetchone()方法获取一条数据
  11. data = cursor.fetchone()
  12.  
  13. print("Database version : %s"%data)
  14.  
  15. #使用 execute()方法执行SQL,如果表存在则删除
  16. cursor.execute("DROP TABLE if exists employee")
  17.  
  18. #使用预处理语句创建表
  19. sql = """create table employee(
  20. first_name char(20) not null,
  21. last_name char(20),
  22. age int,
  23. sex char(1),
  24. income float
  25. )"""
  26.  
  27. cursor.execute(sql)
  28.  
  29. #关闭数据库链接
  30. lcDB.close()

执行结果:

  1. Database version : 8.0.11
数据库:

插入数据:

  1. import pymysql
  2.  
  3. #打开数据库链接
  4. lcDB = pymysql.connect("127.0.0.1", "root", "", "test")
  5.  
  6. #使用cursor()方法创建一个游标对象cursor
  7. cursor = lcDB.cursor()
  8.  
  9. #SQL 插入语句
  10. #此处可将SQL换位update, delete等语句
  11. sql = "insert into employee(first_name,\
  12. last_name, age, sex, income)\
  13. values ('%s', '%s', '%s','%s', '%s')"% \
  14. ('li', 'Mohan', 20, 'M', 1000)
  15.  
  16. try:
  17. # 使用execute()方法执行sql,
  18. cursor.execute(sql)
  19. #提交到数据库执行sql语句
       lcDB.commit()
  20.  
  21. except:
      #发生错误时回滚
      lcDB.rollback()
  22.  
  23. #关闭数据库
    lcDB.close()

数据库查询操作

Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。

  • fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
  • fetchall():接收全部的返回结果行.
  • rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。
  1. import pymysql
  2.  
  3. #打开数据库链接
  4. lcDB = pymysql.connect("127.0.0.1", "root", "", "test")
  5.  
  6. #使用cursor()方法创建一个游标对象cursor
  7. cursor = lcDB.cursor()
  8.  
  9. #SQL 插入语句
  10. #此处可将SQL换位update, delete等语句
  11. sql = "select * from employee where income > %s"%(2000)
  12.  
  13. try:
  14. # 使用execute()方法执行sql,
  15. cursor.execute(sql)
  16. #获取所有记录列表
  17. results = cursor.fetchall()
  18. for row in results:
  19. fname = row[0]
  20. lname = row[1]
  21. age = row[2]
  22. sex = row[3]
  23. income = row[4]
  24. #打印结果
  25. print("fname = %s, lname = %s, age = %s, sex = %s,income = %s" % \
  26. (fname, lname,age, sex, income))
  27.  
  28. except:
  29. print("ERROr: unable to fecth data")
  30.  
  31. #关闭数据库
  32. lcDB.close()
SSH链接:

  -使用mysqldb模块通过ssh隧道连接mysql

  1. import pymysql
  2. from sshtunnel import SSHTunnelForwarder
  3.  
  4. server = SSHTunnelForwarder(
  5. ("132.223.3.23", 19), #ssh IP和port
  6. ssh_password = "",#ssh 密码
  7. ssh_username = "root",#ssh账号
  8. remote_bind_address = ("1.1.1.1", 3306)) #数据库所在的IP和端口
  9.  
  10. #启动服务
  11. server.start()
  12. #打印本地端口,已检查是否配置正确
  13. print(server.local_bind_host)
  14.  
  15. goDB = pymysql.connect(host = "127.0.0.1", #固定写法
  16. port = server.local_bind_port,
  17. user = "root", #数据库账号
  18. passwd = "",#数据库密码
  19. db = "指定数据库名字")# 可以限定,只访问特定的数据库,否则需要在mysql的查询或者操作语句中,指定好表名
  20.  
  21. cur = goDB.cursor()
  22. sql = "select no from gds order by rand() limit 10" #限制每次随机查询10条数据
  23.  
  24. try:
  25. #执行SQL语句检查是否连接成功
  26. cur.execute("select version()")
  27. result = cur.fetchone()
  28. print("Database version: %s" % result)
  29. cur.execute(sql)
  30. data = cur.fetchall()
  31.  
  32. for row in data:
  33. good_no = row[0]
  34. print(good_no)
  35.  
  36. except:
  37. print("Error")
  38.  
  39. #关闭连接
  40. goDB.close()
  41. server.close()

Python --链接MYSQL数据库与简单操作 含SSH链接的更多相关文章

  1. 在php中需要用到的mysql数据库的简单操作

    1.数据库连接 1.1用windows命令行链接数据库服务器 几个DOS命令 在DOS环境下命令后面没有分号,在MySQL环境下,命令后面有分号 进入盘符: 语法:盘符: 进入盘符下的某个文件夹 语法 ...

  2. Python 连接Mysql数据库执行语句操作

    学习Mysql模块的使用,模块命名的坑,解决SHA加密错误无法连接

  3. Java连接MySQL数据库及简单操作代码

    1.Java连接MySQL数据库 Java连接MySql需要下载JDBC驱动MySQL-connector-java-5.0.5.zip(举例,现有新版本).然后将其解压缩到任一目录.我是解压到D盘, ...

  4. python+mysql数据库的简单操作

    最近接了一个任务,测试某项类似于收益情况报表的功能,因计算公式复杂,单纯手算过于复杂,所以想到写成脚本 根据python的分治原则,先整了几个函数用于实现计算逻辑,后发现数据输入过于繁琐,所以决定使用 ...

  5. mysql数据库的简单操作

    首先进入mysql:mysql -u root -p 1.建库: create database 库名称; 例如:create database mydata;(创建一个名为“mydata”的库): ...

  6. Python学习笔记9-Python 链接MySql数据库

    Python 链接MySql数据库,方法很简单: 首先需要先 安装一个MySql链接插件:MySQL-python-1.2.3.win-amd64-py2.7.exe 下载地址:http://dev. ...

  7. python连接mysql数据库简单例子

    今天用pyhton2连接本地的mysql数据库,总的来说比较简单,但还是遇到一些小问题 代码如下: # -*- coding: utf-8 -*- import os import MySQLdb i ...

  8. 使用python读取mysql数据库并进行数据的操作

    (一)环境的配置 使用python调用mysql数据库要引进一些库. 目前我使用的python版本是python3.6.引进库为pymysql 其他对应的库可以有以下选择: mysqldb,oursq ...

  9. 进击的Python【第十二章】:mysql介绍与简单操作,sqlachemy介绍与简单应用

    进击的Python[第十二章]:mysql介绍与简单操作,sqlachemy介绍与简单应用 一.数据库介绍 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数 ...

随机推荐

  1. JS获取当前日期和时间的方法,并按照YYYY-MM-DD格式化

    Js获取当前日期时间及其它操作 var myDate = new Date(); myDate.getYear();        //获取当前年份(2位) myDate.getFullYear(); ...

  2. javascript的垃圾回收机制和内存管理

    垃圾回收 javascript不同于c.c++的一个特点是:具有自动的垃圾回收机制,这就意味着,开发人员可以专注于业务,而不必把过多精力放在内存的管理上,提高开发效率. 所谓的垃圾回收就是找出那些不再 ...

  3. React 错误处理(componentDidCatch)

    前言 看react 文档突然发现有这个 错误处理函数,好像是17年9月出的,这个真的绝了可以帮助我们捕捉错误咯 React 16 将提供一个内置函数 componentDidCatch,如果 rend ...

  4. 微信小程序中的自定义组件(components)

     其实小程序开发很像vue和react的结合,数据绑定和setData  重新渲染页面的数据,最近发现连写组件都是很像,也是醉了,自我认为哈, 因为小程序可以将页面内的功能模块抽象成自定义组件,以便在 ...

  5. Puppet学习笔记(CentOS6.3+Puppet3.01)

    Puppet学习笔记(CentOS6.3+Puppet3.01)  技术 Add comments Oct262012 下了决心,好好学习puppet,周末专门去参加一个puppet的培训,难得朋友那 ...

  6. Apache服务器配置https

    https://startssl.com这个网站可以给我们免费提供可信任的https证书,这里简单介绍一下配置的过程. 首先服务器需要安装openssl和apache的mod_ssl.so模块,并且需 ...

  7. 【ZJOJ5186】【NOIP2017提高组模拟6.30】tty's home

    题目 分析 如果直接求方案数很麻烦. 但是,我们可以反过来做:先求出所有的方案数,在减去不包含的方案数. 由于所有的路径连在一起, 于是\(设f[i]表示以i为根的子树中,连接到i的方案数\) 则\( ...

  8. 【java】并发执行ExecutorService的sumbit返回值的顺序问题

    ArrayList<Future> fl = new ArrayList<Future>(); for (int i = 0; i < 10; i++) { Future ...

  9. js 数组 splice 函数 多线程

    <script type="text/javascript"> var arr = new Array(6) arr[0] = "00" arr[1 ...

  10. Windows 环境上域名配置

    1.Hosts位置 C:\Windows\System32\drivers\etc\hosts 2.Hosts内容 # Copyright (c) 1993-2009 Microsoft Corp. ...