Updated on Feb-11-2021:
一、知识点
(一)直接在vs code中输入sql,就可以出现自己已经保存的代码片段。
(二)在阿里云服务器的脚本上连接数据库,直接用localhost即可。
con = pymysql.connect(host='localhost', user='root', password='1xxxx4', database='article', charset='utf8')
二、方法
(一)利用navicat快速新建字段
其中id记得选择自动增加,并设定为主键。
int(m) 4个字节 ,有符号的范围是-2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字),无符号的范围是0到4294967295
关于mysql的数据类型请看这里:https://www.cnblogs.com/wangcp-2014/p/12320845.html
小提示:
1.id,longtext的长度不设定也没有关系。
2.time字段设定为timestamp,并设定为根据当前时间戳更新,不需要在代码中操作,它会自动添加时间。
(二)建立索引
为了使用INSERT ignore,即当数据库
需要注意的事,设定为索引的字段长度不能太长,不然会报错。
(三)关于时间
mysql支持datetime字段自动写入数据,不需要插入数据。设定的地方在phpmyadmin。
在navicat中的设定见这里
(四)乱码问题
需要将字段的编码设成utf8,不然会出现乱码。
(五)代码
import pymysql import datetime con = pymysql.connect(host='localhost', user='root', password='', database='wp04', charset='utf8') cursor = con.cursor() import hashlib def get_md5(str): m2 = hashlib.md5() m2.update(str.encode('utf8')) return m2.hexdigest() url_md5 = get_md5("http://www.baidu.com") # dt=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") # sql ="INSERT ignore INTO article_posted(url,time) VALUES ('%s','%s')"%(url_md5,dt) #%前的引号要变成双引号 sql ="INSERT ignore INTO article_posted(url) VALUES ('%s')"%(url_md5) #%前的引号要变成双引号 try: cursor.execute(sql) con.commit() except: con.rollback()
(七)速度
直接写入数据库,比调用wordpress xmlrpc发布快多了。
(八)问题
本地测试正常的代码,一到服务器上就出问题,报错:
import pymysql
File "/usr/local/lib/python3.5/dist-packages/pymysql/__init__.py", line 59, in
from . import connections # noqa: E402
File "/usr/local/lib/python3.5/dist-packages/pymysql/connections.py", line 206
后来在网上查了一下,发现原来是pymysql的版本问题。
服务器上使用的python版本为3.5,然后我用pip3安装pymysql,安装的是最新版本的pymysql,但PyMySQL的最新版,不支持Python 2.7 和 3.5版本了。
解决方案:指定PyMySQL版本为0.10.1,sudo pip3 install pymysql==0.10.1
问题得到解决。
三、将html代码存入mysql中
import html m = """ <div class="article-content"><div class="markdown_views prism-atom-one-light" id="content_views"> <svg style="display: none;" xmlns="http://www.w3.org/2000/svg"> <path d="M5,0 0,2.5 5,5z" id="raphael-marker-block" stroke-linecap="round" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> <h1><a id="_1"></a></h1> <font color="#999AAA"> </font> <p>二维码无处不在,你了解吗?</p> <hr color="#000000" size='1"'/> </div> """ s = html.escape( m ) print(s) x = html.unescape( s ) print(x)
搭配soup使用
result = soup.find('div', {'class': 'article-content'}) result = str(result).replace("&", "&") result = html.escape(result) sql ="INSERT INTO article_source(title,body,tags) VALUES ('%s','%s','%s')"%(title,result,title_kwords)
四、从数据库找到相关文章合成新文章
#keyword= "二维码" #sql = "SELECT * FROM `article_source` WHERE tags like '%"+keyword+"%'" SELECT * FROM `article_source` WHERE tags like '%,二维码,%' results = cursor.fetchone() if results[0] == 0: print('数据库中没有记录') return None else: return results[2] #results[2]对应数据库中的文章内容,results[1]是标题。
下面为2018年5月的内容:
这里使用MySQL数据库为例,首先需要在你的电脑上安装Mysql,我的电脑中已经安装了Xampp集成环境,所以不再多述。
一、安装pymysql
pymsql是Python中操作MySQL的模块,直接使用pip命令安装。
pip install pymysql
二、建立数据库
通过http://127.0.0.1/phpmyadmin/,进入phpmyadmin。点击最上方导航栏的“数据库”链接,输入数据库名称:simple_db,选择索引方式为“utf8_general_ci”,再点击“创建”按钮。
三、添加数据表
创建完数据库之后,在新建数据表下面输入数据表的名称:product_class,选择字段数为4,点击“执行”按钮。
在出现的界面中,输入数据表的相关信息,再点击执行即可。
小知识:text 多少个汉字
以utf8编码计算的话
LANGTEXT:4294967295/3=1431655765个汉字,14亿,存储空间占用:4294967295/1024/1024/1024=4G的数据;
MEDIUMTEXT:16777215/3=5592405个汉字,560万,存储空间占用:16777215/1024/1024=16M的数据;
TEXT:65535/3=21845个汉字,约20000,存储空间占用:65535/1024=64K的数据;
创建完之后,可以点击product_class这个数据表,再点击最上方导航栏的“结构”链接,可以查看数据表的各字段,最终的product_class表的各字段是这样的。
依照上面的方法,添加其他的数据表,添加后的information表结构应该是这样的:
manager表
product表
四、添加管理员
输入以下命令:
INSERT INTO manager(login_name, login_password, is_enable) VALUES ('admin', 'E10ADC3949BA59ABBE56E057F20F883E', 1);
然后点开表,可以看到我们刚刚插入的数据:
五、添加数据库用户
在simple_db数据库中,点击导航栏的“权限”链接,在出现的页面中,点击“新增用户账户”链接。
输入用户名及密码(我这里设定的用户名是postgres,密码是123456),注意确认勾选了“simple_db” ,再点击“执行”按钮就可以了。