服务器在阿里云上,和一般的本地配置方案不太一样,所以网上的博客里没有解决办法,本人在这里记录一下,方便大家交流。

  由于数据要保存到MySQL数据库中,使用python对数据进行操作,爬到数据直接进行保存。上一篇博客里已经讲过安装python时需要注意的一个小问题,这篇博客主要讲MySQL的安装配置和python连接数据库的一个小问题(坑)。

1. 安装和配置MySQL

  MySQL的安装很简单,用命令行apt-get即可。这个网上博客很多就不赘述。重点是安装后的配置,为了支持中文需要修改两处配置文件。(如果已经保存过数据在里面,那修改起来就很繁琐,所以一步到位,提前改好。)

  1. 在文件/etc/mysql/conf.d/mysql.cnf 下加一行:default-character-set=utf8,然后保存,完整截图:

                         

  2. 在文件/etc/mysql/mysql.conf.d/mysqld.cnf 中间部分,Basic Settings里加 character-set-server=utf8,然后保存,截图:

                        

  然后重启MySQL,命令行里输入:

  1 service mysql restart 

  用root用户登录MySQL,使用SQL语句查看:

  1 show variables like '%char%';

                    

  如果是这样证明修改成功。接下来使用命令创建一个数据库、表、新用户,来供python连接数据库使用:

  1 create database basename;    # basename是想创建的数据库名称2 use basebname;    # 进入这个新建的数据库3 create table tablename(ID varchar(30) not null, Address varchar(70), primary key(ID));    #在里面新建一个表含两列,ID和Adress,ID不能为空,主键设置为ID4 grant all privileges on basename.tablename to user01@"%" identfied by "password";5 flush privileges;    # 更新权限使得其生效

  上面第四句是新建一个名为user01的用户,在basename里的tablename表里有所有的权限,@"%"表示可以在任何地方访问以密码password访问,换成@"localhost"表示只能在本地访问。而查看哪些用户具有哪些权限的语句是:

  1 select user, host from mysql.user;    # 查看所有用户名和他们的访问位置2 show grants for user01@"%";    # 查看user01用户的所有权限

  我们知道权限控制是很重要的,如果给错权限可以撤销:

  1 revoke create,drop on basename.tablename to user01@"%";    # 撤销用户创建和删除的权限2 flush privileges;  # 更新权限

2. Python连接MySQL

  Python3使用PyMySQL来操作MySQL,Python2使用MySQLdb。这里安装PyMySQL。

  1 pip install pymysql

  接下来给出一个简短的例子说明使用方法:

   1 import pymysql.cursors
   2
   3 # 连接数据库
   4 connection = pymysql.connect(host='要连接的IP',
   5                              user='user',
   6                              password='passwd',
   7                              db='db',# 要连接的数据库
   8                              charset='utf8mb4',
   9                              cursorclass=pymysql.cursors.DictCursor)10 11 try:12     with connection.cursor() as cursor:13         # 写一个插入语句,向user这个表插入一条记录14         sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"  # 15         cursor.execute(sql)16 17     # 最后提交一下变更18     connection.commit()19 20     with connection.cursor() as cursor:21         # 查询一条记录,也可以用fetchall查询所有满足条件的记录22         sql = "SELECT `id`, `password` FROM `users` WHERE `email`=%s"23         cursor.execute(sql)24         result = cursor.fetchone()25         print(result)26 finally:27     connection.close()

  看似一切正常,work well,但是在运行自己构造sql语句的时候始终报错:

  1 sql = "update "+tablename+" set Address="+info['ad']+" where ID like "+id[1]2 pymysql.err.InternalError: (1054, "Unknown column 'Address' in 'field list'")

  一般出现这个错误是sql语句有问题,比如里面少了空格。试了别人的博客里的方法都不靠谱,最后发现这是单引号引起的问题。语句里赋的值应该用函数repr处理一下供解释器使用。

  1 sql = "update "+tablename+" set Address="+repr(info['ad'])+" where ID like "+repr(id[1])

  另外MySQL单独使用单引号和双引号没有区别。

转载于:https://www.cnblogs.com/baijing1/p/9763680.html

远程和Ubuntu服务器进行Socket通信,使用python和C#(准备篇)相关推荐

  1. java iso8583 socket 服务_JAVA客户端amp;服务器的socket通信

    JAVA客户端&服务器的socket通信 socket是两台主机之间的一个连接通道,它可以完成七个基本操作: 发送远程机器 发送数据 接收数据 关闭连接 绑定端口 监听入站数据 再绑定端口上接 ...

  2. Android客户端与PC服务器实现Socket通信

    Android终端持续扫描AP信息并发送给服务器端的实现.首先基于TCP协议在Android终端和PC两端之间形成网络虚拟链路.使用ServerSocket创建TCP服务器端,然后在Android客户 ...

  3. unity android服务器端,【深圳Unity3D培训】 Android客户端与PC服务器实现Socket通信

    [深圳Unity3D培训] Android客户端与PC服务器实现Socket通信 Android终端连续扫描AP信息并发送给服务器端的完成.起首基于TCP协定在Android终端和PC两头之间构成收集 ...

  4. 小鱼教你ubuntu远程连接ubuntu服务器建立自己的服务器账户

    ubuntu远程连接ubuntu服务器&&建立自己的服务器账户 ssh连接服务器 建立新用户并设置密码 赋予账户sudo权限 账户切换 结语 实验室置办了一台服务器,其他同学都是win ...

  5. Android客户端与PC服务器实现Socket通信(wifi)

    转载自:http://www.cnblogs.com/dwayne/archive/2012/05/22/Android_pc_wifi_socket.html 本文介绍Android终端持续扫描AP ...

  6. unity3d Android客户端与PC服务器实现Socket通信(wifi)

    本文介绍Android终端持续扫描AP信息并发送给服务器端的实现.首先基于TCP协议在Android终端和PC两端之间形成网络虚拟链路.使用ServerSocket创建TCP服务器端,然后在Andro ...

  7. android socket 简易聊天室 java服务器,Android Socket通信实现简单聊天室

    socket通信是基于底层TCP/IP协议实现的.这种服务端不需要任何的配置文件和tomcat就可以完成服务端的发布,使用纯java代码实现通信.socket是对TCP/IP的封装调用,本身并不是一种 ...

  8. unity android服务器端,[转载收藏]unity3d Android客户端与PC服务器实现Socket通信(wifi)...

    本文介绍Android终端持续扫描AP信息并发送给服务器端的实现.首先基于TCP协议在Android终端和PC两端之间形成网络虚拟链路.使用ServerSocket创建TCP服务器端,然后在Andro ...

  9. VSCode远程连接ubuntu服务器

    1.打开VSCode,安装插件 安装插件,汉化,方法如下.重启之后界面就都是中文了.因为我之前弄过了,如果你的已经是中文了,可以省去这一步. 安装remote development插件,如下图.用于 ...

最新文章

  1. 2021年大数据ELK(六):安装Elasticsearch
  2. leetcode004 Median_of_Two_Sorted_Arrays.py
  3. relu函数_从 ReLU 到 GELU,一文概览神经网络的激活函数
  4. BZOJ1146 [CTSC2008]网络管理Network 树链剖分 主席树 树状数组
  5. SAP Fiori Elements List Report Smart Table Toolbar 的 XML 视图实现
  6. ORA-12519: TNS:no appropriate service handler found 解决
  7. 再见Postman,这款API神器更好用!
  8. Windows Server 2008R2 Web服务器
  9. DOM_xss预备知识
  10. Openlaye:学习笔记之事件
  11. fullpage.js使用指南
  12. 技嘉服务器主板是什么型号,技嘉主板小型号字母代表什么意思?
  13. 教师计算机西沃培训心得,希沃电子白板学习心得体会
  14. 我们写的代码是如何一步步变成可执行程序(.EXE)的?
  15. 做事的常识 书籍梗概 小仓广
  16. Android底部导航栏的三种风格实现
  17. 360测试开发面试总结 -- 失败
  18. 蘑菇街按关键字搜索mogujie商品 API 返回值说明
  19. error C1083:无法打开文件stddef.h或crtd bg.h
  20. 虚树学习笔记(洛谷2495 消耗战)

热门文章

  1. latex入门(转载)
  2. 时间序列深度学习:状态 LSTM 模型预测太阳黑子
  3. BR系列罗氏线圈变送器
  4. 实现双色球彩票功能(判断是否中奖)
  5. 数据结构----链表
  6. python人像变卡通_python 人像转漫画
  7. CCNP300-410学习笔记(251-281)
  8. Struts2-控制标签
  9. sql在插入语句使用子查询_SQL插入查询
  10. 下巴肉和脖子肉怎么减肥