Home >  > Python 操作MySQL数据库(Mysql备忘)

Python 操作MySQL数据库(Mysql备忘)

0

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()

(六)
python mysql查询条件带变量方法

(七)速度
直接写入数据库,比调用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("&", "&amp;")
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”,再点击“创建”按钮。
Snap1333

三、添加数据表
创建完数据库之后,在新建数据表下面输入数据表的名称:product_class,选择字段数为4,点击“执行”按钮。
Snap1334

在出现的界面中,输入数据表的相关信息,再点击执行即可。
Snap1336

小知识: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表的各字段是这样的。

Snap1354

依照上面的方法,添加其他的数据表,添加后的information表结构应该是这样的:
Snap1350

manager表
Snap1355
product表
Snap1352

四、添加管理员
输入以下命令:

INSERT INTO manager(login_name, login_password, is_enable) VALUES ('admin', 'E10ADC3949BA59ABBE56E057F20F883E', 1);

Snap1348

然后点开表,可以看到我们刚刚插入的数据:
Snap1349

五、添加数据库用户
在simple_db数据库中,点击导航栏的“权限”链接,在出现的页面中,点击“新增用户账户”链接。
Snap1356

输入用户名及密码(我这里设定的用户名是postgres,密码是123456),注意确认勾选了“simple_db” ,再点击“执行”按钮就可以了。
Snap1353

本文暂无标签

发表评论

*

*