日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發(fā)布時(shí)間:2024/7/23 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python连接mysql的一些基础知识+安装Navicat可视化数据库+flask_sqlalchemy写数据库 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一.mysql基礎(chǔ)知識(shí)?

?1.connect連接數(shù)據(jù)庫

import pymysqldef get_conn():conn = pymysql.connect(host='xxx.xxx.xxx.xxx', port=3306, user='root', passwd='', db='newspaper_rest') # db:表示數(shù)據(jù)庫名稱return conn

2.創(chuàng)建表

import pymysqldef get_conn():conn = pymysql.connect(host='xxx.xxx.xxx.xxx', port=3306, user='root', passwd='', db='newspaper_rest') # db:表示數(shù)據(jù)庫名稱return conn# 創(chuàng)建mysql表 def ceartTable(cursor,form_name):#刪數(shù)據(jù)庫行為 要慎重# # # 創(chuàng)建newspaper_rest 數(shù)據(jù)庫, 如果存在則刪除newspaper_rest 數(shù)據(jù)庫cursor.execute("drop database if exists newspaper_rest")cursor.execute("create database newspaper_rest")# 選擇 newspaper_rest 這個(gè)數(shù)據(jù)庫cursor.execute("use newspaper_rest")# KEY# IDENTITY# 將sql中的內(nèi)容為創(chuàng)建一個(gè)名為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))# 創(chuàng)建表cursor.execute(sql)print("successfully create table")db = get_conn() cursor = db.cursor()# # # # # # 創(chuàng)建數(shù)據(jù)庫和表 form_name = 'imgs_list_path_form' ceartTable(cursor, form_name)

3.插入并且加上了重復(fù)插入的異常

# 在存放圖片路徑的表中插入數(shù)據(jù) 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:# 插入數(shù)據(jù)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)# 提交到數(shù)據(jù)庫執(zhí)行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):# 要執(zhí)行的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):# 要執(zhí)行的sql語句sql = "delete from recordid_library where " + key + "=" + valuecursor.execute(sql)db.commit()print("successfully delete")

可視化數(shù)據(jù)庫:?

二.安裝Navicat

首先上官網(wǎng)上下載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 解壓后 進(jìn)入解壓后的目錄運(yùn)行命令:?
./start_navicat?

2.修改中文可視

連接上數(shù)據(jù)庫后里面的中文數(shù)據(jù)是亂碼,把Ubuntu的字符集修改為zh_CN.utf8就行了,修改方法:?
1.查看系統(tǒng)支持的字符集: locale -a

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

3.用vim命令打開start_navicat文件,會(huì)看到 export LANG=”en_US.UTF-8” 將這句話改為 export LANG=”zh_CN.UTF-8”。

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

刪除后,再次啟動(dòng)navicat時(shí),會(huì)加載wine的更新配置窗口,啟動(dòng)后之前用的連接名以及密碼已經(jīng)沒有了,需要重新創(chuàng)建連接。

4.卸載

1.首先將Navicat 安裝包刪除,

2. rm -r ~/.navicat64

5.不斷延長使用時(shí)間

cd ~/.navicat64/

rm -r *.reg

6.目前最新的

chmod +x navicat15-premium-cs.AppImage

./navicat15-premium-cs.AppImage

三.flask_sqlalchemy寫數(shù)據(jù)庫

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

1.數(shù)據(jù)庫不存在,進(jìn)行創(chuàng)建

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")# 數(shù)據(jù)庫不存在的話就創(chuàng)建 if not database_exists(engine.url):create_database(engine.url)

2.創(chuàng)建表

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)#創(chuàng)建表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) #創(chuàng)建表結(jié)構(gòu) with app.app_context():db.create_all()

?3.表的設(shè)計(jì)與增刪改查調(diào)試

#coding:utf-8 """ 數(shù)據(jù)庫的設(shè)計(jì) """ 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)) #自己設(shè)置自增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()

?

總結(jié)

以上是生活随笔為你收集整理的python连接mysql的一些基础知识+安装Navicat可视化数据库+flask_sqlalchemy写数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。