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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python多线程详解_Python多线程详解-Python-火龙果软件

發布時間:2023/12/29 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python多线程详解_Python多线程详解-Python-火龙果软件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

編輯推薦:

本文來自于博客,本文詳細介紹了如何使用Python操作MySQL、使用Python操作Redis及項目實戰。

操作MySQL

1)Windows中安裝python和pycharm

2)ubuntu中安裝python和pycharm

安裝步驟不做贅述,pycharm運行腳本

#!/usr/bin/env python

import MySQLdb

#get connection

try:

con = MySQLdb.connect(

host='localhost',

user='root',

passwd='12346',

port=3308,

db='sakila',

charset='utf8'

)

except MySQLdb.Error as e:

print('error:%s'% e)

cursor = con.cursor()

cursor.execute('SELECT * FROM `store`')

rest = cursor.fetchone()

print(rest)

#close connection

con.close()

3)查詢數據庫

#!/usr/bin/env python

import MySQLdb

class MysqlQuery(object):

def __init__(self):

self.get_conn()

def get_conn(self):

# get connection

try:

self.conn = MySQLdb.connect(

host='localhost',

user='root',

passwd='123456',

port=3308,

db='sakila',

charset='utf8'

)

except MySQLdb.Error as e:

print('error:%s' % e)

cursor = self.conn.cursor()

cursor.execute('SELECT * FROM `store`')

rest = cursor.fetchone()

print(rest)

def close_conn(self):

try:

if self.conn:

# close connection

self.conn.close()

except MySQLdb.Error as e:

print('Error:%s'%e)

def get_one(self):

#prepare SQL

/*雖然定義類型為int,可使用string*/

sql='SELECT * FROM `store` where `store_id` =%s'

#get cursor

cursor=self.conn.cursor()

cursor.execute(sql,('1',))

print(cursor.rowcount)

rest=dict(zip([k[0] for k in cursor.description],cursor.fetchone()))

print(rest)

print(rest['store_id'])

self.close_conn()

return rest

def main():

obj = MysqlQuery()

rest = obj.get_one();

print(rest['store_id'])

if __name__ == '__main__':

main()

/*取走所有數據,形成數組*/

rest = [dict(zip([k[0] for k in cursor.description],row))for row in cursor.fetchall()]

zip([iterable, …])

Python的一個內建函數,它接受一系列可迭代的對象作為參數,將對象中對應的元素打包成一個個tuple(元組),然后返回由這些tuples組成的list(列表)。若傳入參數的長度不等,則返回list的長度和參數中長度最短的對象相同。利用*號操作符,可以將list unzip(解壓)。

dict()作用:dict() 函數用于創建一個字典。返回一個字典。

class dict(**kwarg)

class dict(mapping, **kwarg)

class dict(iterable, **kwarg)

/*

kwargs -- 關鍵字

mapping -- 元素的容器。

iterable -- 可迭代對象

*/

4)更新數據

def add_one(self):

row_count=0

try:

sql = ("insert into `film`(`title`,`description`,`language_id`) value" "(%s,%s,%s);")

cursor = self.conn.cursor()

cursor.execute(sql, ('chia', 'ashajhsjah','1'))

self.conn.commit()

except:

print('error')

self.conn.rollback()

row_count=cursor.rowcount

cursor.close()

self.close_conn()

return row_count

5)ORM:SQLAlChemy

pip install SQLAlchemy

import sqlalchemy

declarative_base() 創建了一個 BaseModel 類,這個類的子類可以自動與一個表關聯。

增刪改查

#!/usr/bin/python

#coding=utf-8

from sqlalchemy import create_engine

from sqlalchemy.ext.declarative import declarative_base

from sqlalchemy.orm import sessionmaker

from sqlalchemy import Column, Integer, String, DateTime, Boolean

import datetime

#engine=create_engine('數據庫類型://用戶名:密碼@ip:端口/數據庫名')

engine=create_engine('mysql://root:123456@localhost:3308/sakila')

Base=declarative_base()

Session = sessionmaker(bind=engine)

class Store(Base):

__tablename__='country'#數據庫表名

country_id = Column(Integer, primary_key=True)

country = Column(String(200), nullable=False)

last_update = Column(String(2000), nullable=False)

class MysqlOrmTest(object):

def __init__(self):

self.session=Session()

def add_one(self):

new_obj=Store(

country_id='130',

country='hhhsahsa',

last_update=datetime.datetime.now()#此處需要import datetime

)

self.session.add(new_obj)

self.session.commit()

return new_obj

def get_one(self):

return self.session.query(Store).get(1)

def update_date(self):

obj=self.session.query(Store).get(1)

obj.manager_staff_id=1

self.session.add(obj)

self.session.commit()

return obj

def delete_data(self):

data=self.session.query(Store).get(3)

self.session.delete(data)

self.session.commit()

def main():

# rest = obj.add_one()

# print(dir(rest))

# print(obj.get_one().title)

# print(obj.get_more().count())

# for row in obj.get_more():

# print(row.title)

# print(obj.update_data())

if __name__ == '__main__':

main()

6)項目實戰

使用pycharm專業版,選擇flask框架,代碼如下:

from flask import Flask

app = Flask(__name__)

@app.route('/hello')

def hello_world():

return 'Hello World!hello'

if __name__ == '__main__':

app.run(debug=True)

##flask支持熱部署

簡單搭建flask架構網站

本人使用pycharm開發flask項目,可以利用工具導入工具包:

##引入相關包

from flask_sqlalchemy import SQLAlchemy

from flask import Flask, render_template, flash, redirect, url_for, abort, request

app = Flask(__name__)

##配置數據庫

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:123456@localhost:3308/flaskdb'

db=SQLAlchemy(app)

##完成ORM映射

class News(db.Model):

__tablename__='news'

id = db.Column(db.Integer, primary_key=True)

title = db.Column(db.String(200), nullable=False)

img_url = db.Column(db.String(2000), nullable=False)

content = db.Column(db.String(2000), nullable=True)

is_valid = db.Column(db.String(2000), nullable=True)

created_at = db.Column(db.String(2000), nullable=True)

updated_at = db.Column(db.String(2000), nullable=True)

news_type = db.Column(db.String(2000), nullable=True)

def __repr__(self):

return '' % self.title

##python生成HTML效果不好

@app.route('/hello')

def hello_world():

return 'Hello World!hello'

##使用渲染引擎Jinja2

@app.route('/')

def index():

news_list=News.query.all()

return render_template("index.html",news_list=news_list)

@app.route('/cat//')

def cat(name):

news_list=News.query.filter(News.news_type==name)

return render_template('cat.html',new_list=news_list)

@app.route('/detail//')

def detail(pk):

new_obj=News.query.get(pk)

return render_template('detail.html',new_obj=new_obj)

@app.route('/admin/')

@app.route('/admin//')

def admin(page=None):

return render_template("admin/index.html")

@app.route('/admin/add/', methods=['GET', 'POST'])

def add():

return render_template("admin/add.html")

@app.route('/admin/update//', methods=['GET', 'POST'])

def update(pk):

return render_template("admin/update.html")

@app.route('/admin/delete//', methods=['POST'])

def delete(pk):

return 'no'

if __name__ == '__main__':

app.run(debug=True)

操作Redis

1) Redis安裝

sudo apt-get update

sudo apt-get install redis-server

##啟動Redis服務器

redis-server

##查看 redis 是否啟動?

redis-cli

2)Redis命令

Set animal 'cat'

get animal

##添加value

append animal 'dog'

mset user1 'chu' user2 'yao'

mget user1 user2

set num 9

incr/decr num /*增加減少1*/

set user:chuyao;age:45 'asasasasa'

列表(list)相關操作

lpush/rpush q1 'chu' 'yao' 'Amy'/*從左、右插入數據*/

lrange/*獲取指定長度的數據*/

ltrim/*截取一定長度的數據*/

lpop/rpop/*移除最左、右的元素并返回*/

lpushx/rpushx --key/* key存在時候才插入數據,不存在時不做任何處理*/

集合(Set)相關操作

sadd/srem /*添加、刪除元素*/

sismember /*判斷是否為set的一個元素*/

smembers /*返回該集合的所有成員*/

sdiff /*返回一個集合與其他集合的差異*/

sinter/*返回幾個集合的交集*/

sunion/*返回幾個集合的并集*/

散列(hash)相關操作

3)redis-py連接

import redis

r=redis.StrictRedis(host='120.95.132.174',port=6379,db=0)

user1=r.get('user1')

print(user1)

注意,如果是遠程連接數據庫,需要修改Redis配置文件。

1)注釋掉bind 127.0.0.1可以使所有的ip訪問redis。

2)修改辦法:protected-mode no

4)Python 操作String類型

import redis

class TestString(object):

def __init__(self):

self.r=redis.StrictRedis(host='120.95.132.174',port=6379,db=0)

def test_set(self):

rest=self.r.set('user2','Amy');

print(rest)

def test_get(self):

rest=self.r.get('user1')

print rest

return rest

def test_mset(self):

d={

'user3':'Bob',

'user4':'BobX'

}

rest=self.r.mset(d)

print(rest)

return rest

def test_mget(self):

l=['user1','user2']

rest=self.r.mget(l)

print(rest)

return rest

def test_del(self):

rest=self.r.delete('user1')

print (rest)

def main():

str_obj=TestString();

# str_obj.test_set();

str_obj.test_get();

# str_obj.test_mset();

# str_obj.test_mget();

# str_obj.test_del();

if __name__=='__main__':

main()

5)項目實戰

新聞數據,Hash

新聞ID,String

分頁數據,List

排序,Sorted Set

總結

以上是生活随笔為你收集整理的python多线程详解_Python多线程详解-Python-火龙果软件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲精品一区二区 | 久久黄网| 久久婷婷久久 | 很黄很色的视频 | 91小宝寻花一区二区三区 | 国产精品高潮呻吟久久av野狼 | 91丨porny丨 | 人妻熟女一区 | 国产日韩视频 | 国产午夜精品在线 | 夜色伊人 | av在线你懂的| 538国产精品一区二区 | 国产精品一区二区电影 | 花房姑娘免费全集 | 亚洲综合丁香 | 成人免费视频观看视频 | 在线观看免费av片 | 永久免费看成人av的动态图 | 最新日韩精品 | 免费中文字幕日韩欧美 | 久久久久中文字幕 | 精品一区二区三区欧美 | 亚洲精品在线播放视频 | 天天综合网久久综合网 | 午夜影院网站 | 黑人一级黄色片 | 免费一级黄 | 在线看片网址 | av在线电影网 | 国内精品久久久久久 | 亚洲五十路 | 五月激情视频 | 波多野在线观看 | av青娱乐 | 国产成人精品一区二区无码呦 | 成人久久网 | 污网站在线免费看 | 中文精品久久久久人妻不卡 | 黄色片在线免费观看 | 第一区免费在线观看 | 国产熟妇一区二区三区aⅴ网站 | 欧美极度另类 | 亚洲国产成人一区二区 | 亚洲精品xxxx | 国产成人精品免费网站 | 日韩精品视频免费播放 | 国产白拍 | 亚洲av永久无码精品一区二区国产 | 污视频免费在线观看网站 | 午夜精品免费 | 国产免费激情视频 | 97国产精品视频人人做人人爱 | 午夜影院在线观看18 | 日韩欧美爱爱 | 色哟哟在线免费观看 | 黄色网址进入 | 亚洲一级片在线播放 | 男人的天堂一区二区 | 91视频在线观看网站 | 欧美顶级少妇做爰hd | 韩国女同性做爰三级 | 九九精品在线观看视频 | 噜噜噜精品欧美成人 | 亚洲午夜久久久久久久久红桃 | 中国av毛片| 靠逼动漫 | 全部免费毛片在线播放一个 | 97国产在线 | 亚洲色欲色欲www | 色婷婷香蕉在线一区二区 | 国产91精品一区 | 色播视频在线观看 | 自拍偷拍亚洲综合 | 亚洲欧美在线视频观看 | 国产精品99久久 | 欧美黄大片 | 人妻一区二区三区视频 | 中文字幕最新 | 国内黄色网址 | 熟女少妇一区二区 | 可以看黄色的网站 | 久久93| a级黄片毛片 | 欧美日本精品 | 日本网站在线看 | www.四虎在线观看 | 97视频免费在线观看 | 91久久超碰 | 黑人vs亚洲人在线播放 | 99国产精品白浆在线观看免费 | 在线亚洲精品 | 国模无码一区二区三区 | 欧美三级一区 | 中国人与拘一级毛片 | 男人天堂免费视频 | 日本大尺度做爰呻吟 | 精品二区视频 | 午夜精品成人 |