python连接mysql的一些基础知识+安装Navicat可视化数据库+flask_sqlalchemy写数据库

一.mysql基础知识 

 1.connect连接数据库

import pymysqldef get_conn():conn = pymysql.connect(host='xxx.xxx.xxx.xxx', port=3306, user='root', passwd='', db='newspaper_rest') # db:表示数据库名称return conn

2.创建表

import pymysqldef get_conn():conn = pymysql.connect(host='xxx.xxx.xxx.xxx', port=3306, user='root', passwd='', db='newspaper_rest') # db:表示数据库名称return conn# 创建mysql表
def ceartTable(cursor,form_name):#删数据库行为 要慎重# # # 创建newspaper_rest 数据库, 如果存在则删除newspaper_rest 数据库cursor.execute("drop database if exists newspaper_rest")cursor.execute("create database newspaper_rest")# 选择 newspaper_rest 这个数据库cursor.execute("use newspaper_rest")# KEY# IDENTITY# 将sql中的内容为创建一个名为recordid_form的表sql = """CREATE TABLE IF NOT EXISTS %s (recordid VARCHAR (100),publish_date VARCHAR (100),page_num VARCHAR (100),ISdeal VARCHAR (1),primary key (recordid,publish_date,page_num))"""%(form_name)# # 如果存在表则删除# cursor.execute("drop table if exists %s"%(form_name))# 创建表cursor.execute(sql)print("successfully create table")db = get_conn()
cursor = db.cursor()# # # # # # 创建数据库和表
form_name = 'imgs_list_path_form'
ceartTable(cursor, form_name)

3.插入并且加上了重复插入的异常

# 在存放图片路径的表中插入数据
def insert_pub_page_name_data(db,cursor,recordid, publish_name,page_num,isdeal):# ISdeal = [str(isdeal)]*len(recordid)# data_tuple = tuple(zip(recordid, ISdeal))try:# 插入数据sql = "INSERT INTO imgs_list_path_form (recordid,publish_date,page_num,ISdeal) VALUES('%s','%s','%s','%s')"%(recordid, publish_name,page_num,isdeal)cursor.execute(sql)# cursor.executemany(sql, data_tuple)# 提交到数据库执行db.commit()print("successfully insert publish date data!")except Exception as e:print('insert multipy!', e)return Falsereturn True

4.查询

def find_pub_page_name_data(cursor,is_deal):# 要执行的sql语句sql = "select * from imgs_list_path_form where ISdeal ='%s'"%(is_deal)cursor.execute(sql)try:result = cursor.fetchall()except TypeError:print("An exception was raised")else:# print(result, "successfully find")print("successfully find publish date data!!!")# print('res:', result)return result

5.更新

def update_pub_page_name_data(db,cursor,recordid,publish_name,page_num):try:# 更改sql = "update imgs_list_path_form set ISdeal='1' where recordid='%s' AND publish_date='%s' AND page_num='%s'"%(recordid,publish_name,page_num)cursor.execute(sql)db.commit()print('update Success!')except Exception as e:print('update fail!',e)return Falsereturn True

6.删除

# 删除
def deleteRecord(db, cursor, key, value):# 要执行的sql语句sql = "delete from recordid_library where " + key + "=" + valuecursor.execute(sql)db.commit()print("successfully delete")

可视化数据库: 

二.安装Navicat

首先上官网上下载LINUX版本: http://www.navicat.com.cn/download/navicat-premium
1.安装

1 下载 navicat110_mysql_en.tar.gz 文件

2.tar -zxvf xxx/navicat112_mysql_cs_x64

3 解压后 进入解压后的目录运行命令: 
./start_navicat 

2.修改中文可视

连接上数据库后里面的中文数据是乱码,把Ubuntu的字符集修改为zh_CN.utf8就行了,修改方法: 
1.查看系统支持的字符集: locale -a

2,修改字符集: export LANG=zh_CN.utf8

3.用vim命令打开start_navicat文件,会看到 export LANG=”en_US.UTF-8” 将这句话改为 export LANG=”zh_CN.UTF-8”。

3.破解
sudo rm -r /home/fzh/.navicat64/

删除后,再次启动navicat时,会加载wine的更新配置窗口,启动后之前用的连接名以及密码已经没有了,需要重新创建连接。

4.卸载

1.首先将Navicat 安装包删除,

2. rm -r ~/.navicat64

5.不断延长使用时间

cd ~/.navicat64/

rm -r *.reg

6.目前最新的

chmod +x navicat15-premium-cs.AppImage

./navicat15-premium-cs.AppImage

三.flask_sqlalchemy写数据库

官方文档:https://sqlalchemy-utils.readthedocs.io/en/latest/database_helpers.html

1.数据库不存在,进行创建

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy_utils.functions import database_exists, create_database
from flask_sqlalchemy import SQLAlchemy
from flask import Flask, jsonify, request
db = SQLAlchemy()#本地配置
username = 'root'
password = '123456'
ip = '127.0.0.1'
port = '3306'
database = "fzh_database"sql_url = "mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8mb4".format(username, password, ip, port, database)
engine = create_engine(sql_url, encoding="utf8")# 数据库不存在的话就创建
if not database_exists(engine.url):create_database(engine.url)

2.创建表

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy_utils.functions import database_exists, create_database
from flask_sqlalchemy import SQLAlchemy
from flask import Flask, jsonify, request
db = SQLAlchemy()#本地配置
username = 'root'
password = '123456'
ip = '127.0.0.1'
port = '3306'
database = "fzh_database"sql_url = "mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8mb4".format(username, password, ip, port, database)
app = Flask(__name__)app.config["SQLALCHEMY_DATABASE_URI"
] = sql_url# app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = Truedb.init_app(app)#创建表class AIRedFile(db.Model):__tablename__ = "ai_redfile"pid = db.Column("pid", db.String(255))file_id = db.Column("file_id", db.String(255))file_path = db.Column("file_path", db.String(255))is_deal = db.Column("is_deal", db.String(1))type_ = db.Column("type", db.String(5))img_id = db.Column("img_id", db.String(255))angle = db.Column("angle", db.String(5))page_num = db.Column("page_num", db.Integer)url = db.Column("url", db.String(255))gpu_id = db.Column("gpu_id", db.String(1))key_ID = db.Column("key_ID", db.Integer, primary_key=True, autoincrement=True)create_time = db.Column('create_time', db.DateTime)update_time = db.Column('update_time', db.DateTime)def __init__(self, pid, file_id, file_path, is_deal, type_, img_id, angle, page_num, url, gpu_id, create_time, update_time):self.pid = pidself.file_id = file_idself.file_path = file_pathself.is_deal = is_dealself.type_ = type_self.img_id = img_idself.angle = angleself.page_num = page_numself.url = urlself.gpu_id = gpu_idself.create_time = create_timeself.update_time = update_time
# Base.metadata.create_all(engine) #创建表结构
with app.app_context():db.create_all()

 3.表的设计与增删改查调试

#coding:utf-8
"""
数据库的设计
"""
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime
db = SQLAlchemy()
class AIDaxin(db.Model):bank_id = db.Column("bank_id", db.String(255))bank_name = db.Column("bank_name", db.String(255))pid = db.Column("pid", db.String(255))file_pid = db.Column("file_pid", db.String(255)) #自己设置自增idkey_ID = db.Column("key_ID", db.Integer, primary_key=True, autoincrement=True)file_path = db.Column("file_path", db.String(255))is_deal = db.Column("is_deal", db.String(1))create_time = db.Column('create_time', db.DateTime)update_time = db.Column('update_time', db.DateTime)__tablename__ = "ai_daxin"def __init__(self, bank_id, bank_name, pid, file_pid, file_path, is_deal, create_time, update_time):self.bank_id = bank_idself.bank_name = bank_nameself.pid = pidself.file_pid = file_pidself.file_path = file_pathself.is_deal = is_dealself.create_time = create_timeself.update_time = update_time#debug 使用
def ai_daxin_test():from flask import Flask, jsonify, requestapp = Flask(__name__)app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:123456@localhost:3306/fzh_local_test"# # # #增# import datetime# with app.app_context():#     test_news = AIDaxin('bank_id1', 'bank_name1','pid1', 'file_pid3', 'file_path3', '0', datetime.datetime.now(), None)#     db.session.add(test_news)#     db.session.commit()# 查# with app.app_context():#     pdf_infos = AIDaxin.query.filter_by(is_deal="0").all()# print('pdf_infos:', pdf_infos)# for pdf_info in pdf_infos:#     print('pdf_info.pid:', pdf_info.pid)#     print('pdf_info.file_pid:', pdf_info.file_pid)#     print('pdf_info.file_path:', pdf_info.file_path)#     print('pdf_info.is_deal:', pdf_info.is_deal)# #删# with app.app_context():#     newspapers = AINewspaper.query.filter_by(is_deal="0").first()#     db.session.delete(newspapers)#     db.session.commit()# print('newspapers:', newspapers)# 改# with app.app_context():#     pdf_infos = AIDaxin.query.filter_by(file_path="file_path2").first()#     pdf_infos.is_deal = '1'#     db.session.commit()if __name__ == '__main__':ai_dain_test()

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/493234.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工业互联网平台创新发展白皮书(2018)

来源:走向智能论坛摘要:近日,在“2018年产业互联网与数据经济大会——首届工业互联网平台创新发展暨两化融合推进会”上,国家工业信息安全发展研究中心尹丽波主任发布并解读了《工业互联网平台创新发展白皮书(2018&…

迭代器模式和组合模式混用

迭代器模式和组合模式混用 前言 园子里说设计模式的文章算得上是海量了,所以本篇文章所用到的迭代器设计模式和组合模式不提供原理解析,有兴趣的朋友可以到一些前辈的设计模式文章上学学,很多很有意思的。在Head First 设计模式这本书中&…

python实现可扩容队列

#coding:utf-8 """ fzh created on 2019/10/15 构建一个队列 """ import datetimeclass LoopQueue(object):def __init__(self, n10):self.arr [None] * (n1) # 由于特意浪费了一个空间,所以arr的实际大小应该是用户传入的容量1sel…

5G 产业链重要投资节点

来源:兴业证券 ▌5G:大通信容量及超低延时,未来多项应用的基础5G:高工作频率以及频谱带宽带来高通信容量5G(5thgeneration)是指第五代移动电话通信标准。3GPP(第三代合作伙伴计划,电信标准化机构)将5G标准分为了NSA(非独立组网)和SA(独立组网…

Kneser猜想与相关推广

本文本来是想放在Borsuk-Ulam定理的应用这篇文章当中。但是这个文章实在是太长,导致有喧宾夺主之嫌,从而独立出为一篇文章,仅供参考。$\newcommand{\di}{\mathrm{dist}}$ (图1:Kneser叙述他的猜想原文手稿)…

python .py文件变为.so文件进行加密

1.mytest.py 需要加密的内容 #coding:utf-8 import datetimeclass Today():def get_time(self):print(datetime.datetime.now())def say(self):print("hello word!")today Today() today.say() today.get_time() 2.执行setup.py 也就是加密脚本 from…

从技术上解读大数据的应用现状和开源未来

来源:网络大数据作者 | 韩锐、 Lizy Kurian John、詹剑锋摘要:近年来,随着大数据系统的快速发展,各式各样的开源基准测试集被开发出来,以评测和分析大数据系统并促进其技术改进。然而,迄今为止,…

十八岁华裔天才携手「量子计算先驱」再次颠覆量子计算

来源:机器之心编译参与:刘晓坤、李泽南摘要:量子计算再一次「被打败了」。今年 8 月,刚刚年满 18 岁的 Ewin Tang 证明了经典算法能以和量子计算机相近的速度解决推荐问题,这位天才少女(更正:不…

resnet系列+mobilenet v2+pytorch代码实现

一.resnet系列backbone import torch.nn as nn import math import torch.utils.model_zoo as model_zooBatchNorm2d nn.BatchNorm2d__all__ [ResNet, resnet18, resnet34, resnet50, resnet101, deformable_resnet18, deformable_resnet50,resnet152]model_urls {resnet18:…

广度优先搜索(BFS)与深度优先搜索(DFS)

一.广度优先搜索(BFS) 1.二叉树代码 # 实现一个二叉树 class TreeNode:def __init__(self, x):self.val xself.left Noneself.right Noneself.nexts []root_node TreeNode(1) node_2 TreeNode(2) node_3 TreeNode(3) node_4 TreeNode(4) node_…

骁龙855在AI性能上真的秒杀麒麟980?噱头而已

来源:网易智能摘要:前段时间的高通发布会上,有关骁龙855 AI性能达到友商竞品两倍的言论可谓是赚足了眼球。高通指出,骁龙855针对CPU、GPU、DSP都进行了AI计算优化,结合第四代AI引擎可以实现每秒超过7万亿次运算&#x…

MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 转载

http://heylinux.com/archives/1004.html MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过。但在实际的生产环境中&am…

深度解析AIoT背后的发展逻辑

来源:iotworld摘要:AI与IoT融合领域近年来一片火热,不论是资本市场,还是大众创业,无不对其表现出极大的热情。AIoT领域中人机交互的市场机会自2017年开始,“AIoT”一词便开始频频刷屏,成为物联网…

ubuntu安装Redis+安装mysql(配置远程登录)+安装jdk+安转nginx+安转teamviewer+安装terminator+安装sublime

一.Ubuntu 安装 Redis sudo apt-get update sudo apt-get install redis-server redis-server 启动 修改redis配置 远程访问: sudo vim /etc/redis/redis.conf 注释掉本机ip: 有坑的地方 #bind 127.0.0.1  service redis-server restart redis-cli ping …

深入理解SQL注入绕过WAF与过滤机制

知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示例 0x5 本文小结 0x6 参考资料 0x0 前言 促使本文产生最初的动机是前些天在做测试时一些攻击向量被WAF挡掉了,…

预测|麦肯锡预测2030年:1亿中国人面临职业转换,全球8亿人被机器人取代

来源:先进制造业摘要:纵观人类技术的发展历程,往往遵循一个固定的规律,即先是概念萌芽,然后经历市场炒作,资本蜂拥,结果潮水退去,泡沫破灭。而繁华落尽后,才会经历技术成…

计算polygon面积和判断顺逆时针方向的方法

一.利用shapely求polygon面积 import shapelyfrom shapely.geometry import Polygon, MultiPoint # 多边形# box1 [2, 0, 4, 2, 2, 4, 0, 2, 0, 0]box1 [2, 0, 4, 2, 2, 4, 0, 2, 2, 2]poly_box1 Polygon(np.array(box1).reshape(-1,2))print(poly_box1)print(p…

亚洲与非洲:中国支付巨头的海外进击

来源:资本实验室摘要:当下,对国人消费影响最大的两家互联网公司莫过于阿里巴巴和腾讯。这两大公司将大量消费级应用整合在自身的平台上,已经彻底改变了许多人的餐饮、购物、出行、旅游等生活方式,而移动支付是其中最基…

利用已有的标注文字信息制作fake数据

from PIL import Image, ImageDraw, ImageFont, ImageFilter import random import glob import numpy as np import os import cv2 from nespaper_semantics import seg_str 1. 从文字库随机选择10个字符 2. 生成图片 3. 随机使用函数# 从字库中随机选择n个字符 def sto_choic…

汽车芯片:半导体芯片巨头加速成长

来源:乐晴智库精选伴随汽车智能化提速,汽车半导体加速成长。2017年全球汽车销量9680万辆(3%);汽车半导体市场规模288亿美元(26%),增速远超整车。汽车半导体按种类可分为功能芯片MCU(MicrocontrollerUnit)、功率半导体(IGBT、MOSFET等)、传感器…