python 连接各类主流数据库的实例代码


Posted in Python onJanuary 30, 2018

本篇博文主要介绍Python连接各种数据库的方法及简单使用

包括关系数据库:sqlite,mysql,mssql

非关系数据库:MongoDB,Redis

代码写的比较清楚,直接上代码

1.连接sqlite

# coding=utf-8
# http://www.runoob.com/sqlite/sqlite-python.html
import sqlite3
import traceback

try:
 # 如果表不存在,就创建
 with sqlite3.connect('test.db') as conn:

  print("Opened database successfully")

  # 删除表
  conn.execute("DROP TABLE IF EXISTS COMPANY")

  # 创建表
  sql = """
     CREATE TABLE IF NOT EXISTS COMPANY
    (ID INTEGER PRIMARY KEY  AUTOINCREMENT,
    NAME   TEXT NOT NULL,
    AGE   INT  NOT NULL,
    ADDRESS  CHAR(50),
    SALARY   REAL);
  """
  conn.execute(sql)

  print("create table successfully")

  # 添加数据
  conn.executemany("INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY) VALUES (?, ?, ?, ? )",
       [('Paul', 32, 'California', 20000.00),
       ('Allen', 25, 'Texas', 15000.00),
       ('Teddy', 23, 'Norway', 20000.00),
       ('Mark', 25, 'Rich-Mond ', 65000.00),
       ('David', 27, 'Texas', 85000.00),
       ('Kim', 22, 'South-Hall', 45000.00),
       ('James', 24, 'Houston', 10000.00)])
  # conn.execute("INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)\
  # VALUES ( 'Paul', 32, 'California', 20000.00 )")
  #
  # conn.execute("INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)\
  # VALUES ('Allen', 25, 'Texas', 15000.00 )")
  #
  # conn.execute("INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)\
  # VALUES ('Teddy', 23, 'Norway', 20000.00 )")
  #
  # conn.execute("INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)\
  # VALUES ( 'Mark', 25, 'Rich-Mond ', 65000.00 )")
  #
  # conn.execute("INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)\
  # VALUES ( 'David', 27, 'Texas', 85000.00 )");
  #
  # conn.execute("INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)\
  # VALUES ( 'Kim', 22, 'South-Hall', 45000.00 )")
  #
  # conn.execute("INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)\
  # VALUES ( 'James', 24, 'Houston', 10000.00 )")

  # 提交,否则重新运行程序时,表中无数据
  conn.commit()
  print("insert successfully")

  # 查询表
  sql = """
   select id,NAME,AGE,ADDRESS,SALARY FROM COMPANY
   """

  result = conn.execute(sql)

  for row in result:
   print("-" * 50) # 输出50个-,作为分界线
   print("%-10s %s" % ("id", row[0])) # 字段名固定10位宽度,并且左对齐
   print("%-10s %s" % ("name", row[1]))
   print("%-10s %s" % ("age", row[2]))
   print("%-10s %s" % ("address", row[3]))
   print("%-10s %.2f" % ("salary", row[4]))
   # or
   # print('{:10s} {:.2f}'.format("salary", row[4]))


except sqlite3.Error as e:
 print("sqlite3 Error:", e)
 traceback.print_exc()

2.连接mysql

2.1使用mysqldb库中的_mysql

#! /usr/bin/env python2.7
# coding=utf-8
# Created by xiaosanyu at 16/5/30

# mysqldb 只支持python2.7
# http://mysql-python.sourceforge.net/

import MySQLdb
from contextlib import closing
import traceback

try:
 # 获取一个数据库连接
 with closing(MySQLdb.connect(host='localhost', user='root', passwd='root', db='test', port=3306,charset='utf8')) as conn:
  print("connect database successfully")
  with closing(conn.cursor()) as cur:
   # 删除表
   cur.execute("DROP TABLE IF EXISTS COMPANY")
   # 创建表
   sql = """
      CREATE TABLE IF NOT EXISTS COMPANY
     (ID INTEGER PRIMARY KEY NOT NULL auto_increment,
     NAME   TEXT NOT NULL,
     AGE   INT  NOT NULL,
     ADDRESS  CHAR(50),
     SALARY   REAL);
   """
   cur.execute(sql)

   print("create table successfully")

   # 添加数据
   # 在一个conn.execute里面里面执行多个sql语句是非法的
   cur.executemany("INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY) VALUES ( %s, %s, %s, %s )",
       [('Paul', 32, 'California', 20000.00),
        ('Allen', 25, 'Texas', 15000.00),
        ('Teddy', 23, 'Norway', 20000.00),
        ('Mark', 25, 'Rich-Mond ', 65000.00),
        ('David', 27, 'Texas', 85000.00),
        ('Kim', 22, 'South-Hall', 45000.00),
        ('James', 24, 'Houston', 10000.00)])

   # 提交,否则重新运行程序时,表中无数据
   conn.commit()
   print("insert successfully")

   # 查询表
   sql = """
    select id,NAME,AGE,ADDRESS,SALARY FROM COMPANY
    """

   cur.execute(sql)

   for row in cur.fetchall():
    print("-" * 50) # 输出50个-,作为分界线
    print("%-10s %s" % ("id", row[0])) # 字段名固定10位宽度,并且左对齐
    print("%-10s %s" % ("name", row[1]))
    print("%-10s %s" % ("age", row[2]))
    print("%-10s %s" % ("address", row[3]))
    print("%-10s %s" % ("salary", row[4]))

except MySQLdb.Error as e:
 print("Mysql Error:", e)
 traceback.print_exc() # 打印错误栈信息

2.2 使用MySQLdb

#! /usr/bin/env python2.7
# coding=utf-8
# Created by xiaosanyu at 16/5/30

# mysqldb 只支持python2.7
# http://mysql-python.sourceforge.net/

import MySQLdb
from contextlib import closing
import traceback

try:
 # 获取一个数据库连接
 with closing(MySQLdb.connect(host='localhost', user='root', passwd='root', db='test', port=3306,charset='utf8')) as conn:
  print("connect database successfully")
  with closing(conn.cursor()) as cur:
   # 删除表
   cur.execute("DROP TABLE IF EXISTS COMPANY")
   # 创建表
   sql = """
      CREATE TABLE IF NOT EXISTS COMPANY
     (ID INTEGER PRIMARY KEY NOT NULL auto_increment,
     NAME   TEXT NOT NULL,
     AGE   INT  NOT NULL,
     ADDRESS  CHAR(50),
     SALARY   REAL);
   """
   cur.execute(sql)

   print("create table successfully")

   # 添加数据
   # 在一个conn.execute里面里面执行多个sql语句是非法的
   cur.executemany("INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY) VALUES ( %s, %s, %s, %s )",
       [('Paul', 32, 'California', 20000.00),
        ('Allen', 25, 'Texas', 15000.00),
        ('Teddy', 23, 'Norway', 20000.00),
        ('Mark', 25, 'Rich-Mond ', 65000.00),
        ('David', 27, 'Texas', 85000.00),
        ('Kim', 22, 'South-Hall', 45000.00),
        ('James', 24, 'Houston', 10000.00)])

   # 提交,否则重新运行程序时,表中无数据
   conn.commit()
   print("insert successfully")

   # 查询表
   sql = """
    select id,NAME,AGE,ADDRESS,SALARY FROM COMPANY
    """

   cur.execute(sql)

   for row in cur.fetchall():
    print("-" * 50) # 输出50个-,作为分界线
    print("%-10s %s" % ("id", row[0])) # 字段名固定10位宽度,并且左对齐
    print("%-10s %s" % ("name", row[1]))
    print("%-10s %s" % ("age", row[2]))
    print("%-10s %s" % ("address", row[3]))
    print("%-10s %s" % ("salary", row[4]))

except MySQLdb.Error as e:
 print("Mysql Error:", e)
 traceback.print_exc() # 打印错误栈信息

2.3使用pymysql

2.1和2.2节使用MySQLdb,不支持Python3.x

pymysql对Python2.x和Python3.x的支持都比较好

# Created by xiaosanyu at 16/5/30
# coding=utf-8

# https://github.com/PyMySQL/PyMySQL/
import pymysql
from contextlib import closing
import traceback

try:
 # 获取一个数据库连接,with关键字 表示退出时,conn自动关闭
 # with 嵌套上一层的with 要使用closing()
 with closing(pymysql.connect(host='localhost', user='root', passwd='root', db='test', port=3306,
         charset='utf8')) as conn:

  print("connect database successfully")

  # 获取游标,with关键字 表示退出时,cur自动关闭
  with conn.cursor() as cur:
   # 删除表
   cur.execute("DROP TABLE IF EXISTS COMPANY")
   # 创建表
   sql = """
      CREATE TABLE IF NOT EXISTS COMPANY
     (ID INTEGER PRIMARY KEY NOT NULL auto_increment,
     NAME   TEXT NOT NULL,
     AGE   INT  NOT NULL,
     ADDRESS  CHAR(50),
     SALARY   REAL);
   """
   cur.execute(sql)

   print("create table successfully")

   # 添加数据
   # 在一个conn.execute里面里面执行多个sql语句是非法的
   cur.executemany("INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY) VALUES ( %s, %s, %s, %s )",
       [('Paul', 32, 'California', 20000.00),
        ('Allen', 25, 'Texas', 15000.00),
        ('Teddy', 23, 'Norway', 20000.00),
        ('Mark', 25, 'Rich-Mond ', 65000.00),
        ('David', 27, 'Texas', 85000.00),
        ('Kim', 22, 'South-Hall', 45000.00),
        ('James', 24, 'Houston', 10000.00)])

   # 提交,否则重新运行程序时,表中无数据
   conn.commit()
   print("insert successfully")

   # 查询表
   sql = """
    select id,NAME,AGE,ADDRESS,SALARY FROM COMPANY
    """

   cur.execute(sql)

   for row in cur.fetchall():
    print("-" * 50) # 输出50个-,作为分界线
    print("%-10s %s" % ("id", row[0])) # 字段名固定10位宽度,并且左对齐
    print("%-10s %s" % ("name", row[1]))
    print("%-10s %s" % ("age", row[2]))
    print("%-10s %s" % ("address", row[3]))
    print("%-10s %s" % ("salary", row[4]))
except pymysql.Error as e:
 print("Mysql Error:", e)
 traceback.print_exc()

3.连接mssql

# Created by xiaosanyu at 16/5/30

# http://www.pymssql.org/en/latest/
import pymssql
from contextlib import closing

try:
 # 先要保证数据库中有test数据库
 # 获取一个数据库连接,with关键字 表示退出时,conn自动关闭
 # with 嵌套上一层的with 要使用closing()
 with closing(pymssql.connect(host='192.168.100.114', user='sa', password='sa12345', database='test', port=1433,
         charset='utf8')) as conn:

  print("connect database successfully")

  # 获取游标,with关键字 表示退出时,cur自动关闭
  with conn.cursor() as cur:
   # 删除表
   cur.execute(
     '''if exists (select 1 from sys.objects where name='COMPANY' and type='U') drop table COMPANY''')
   # 创建表
   sql = """
      CREATE TABLE COMPANY
     (ID INT IDENTITY(1,1) PRIMARY KEY NOT NULL ,
     NAME   TEXT NOT NULL,
     AGE   INT  NOT NULL,
     ADDRESS  CHAR(50),
     SALARY   REAL);
   """
   cur.execute(sql)

   print("create table successfully")

   # 添加数据
   # 在一个conn.execute里面里面执行多个sql语句是非法的
   cur.executemany("INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY) VALUES ( %s, %s, %s, %s )",
       [('Paul', 32, 'California', 20000.00),
        ('Allen', 25, 'Texas', 15000.00),
        ('Teddy', 23, 'Norway', 20000.00),
        ('Mark', 25, 'Rich-Mond', 65000.00),
        ('David', 27, 'Texas', 85000.00),
        ('Kim', 22, 'South-Hall', 45000.00),
        ('James', 24, 'Houston', 10000.00)])

   # 提交,否则重新运行程序时,表中无数据
   conn.commit()
   print("insert successfully")

   # 查询表
   sql = """
    select id,NAME,AGE,ADDRESS,SALARY FROM COMPANY
    """

   cur.execute(sql)

   for row in cur.fetchall():
    print("-" * 50) # 输出50个-,作为分界线
    print("%-10s %s" % ("id", row[0])) # 字段名固定10位宽度,并且左对齐
    print("%-10s %s" % ("name", row[1]))
    print("%-10s %s" % ("age", row[2]))
    print("%-10s %s" % ("address", row[3]))
    print("%-10s %s" % ("salary", row[4]))
except pymssql.Error as e:
 print("mssql Error:", e)
 # traceback.print_exc()

4.连接MongoDB

# Created by xiaosanyu at 16/5/30

# https://docs.mongodb.com/ecosystem/drivers/python/
# https://pypi.python.org/pypi/pymongo/

import pymongo
from pymongo.mongo_client import MongoClient
import pymongo.errors
import traceback

try:
 # 连接到 mongodb 服务
 mongoClient = MongoClient('localhost', 27017)
 # 连接到数据库
 mongoDatabase = mongoClient.test
 print("connect database successfully")

 # 获取集合
 mongoCollection = mongoDatabase.COMPANY

 # 移除所有数据
 mongoCollection.remove()

 # 添加数据
 mongoCollection.insert_many([{"Name": "Paul", "Age": "32", "Address": "California", "Salary": "20000.00"},
         {"Name": "Allen", "Age": "25", "Address": "Texas", "Salary": "15000.00"},
         {"Name": "Teddy", "Age": "23", "Address": "Norway", "Salary": "20000.00"},
         {"Name": "Mark", "Age": "25", "Address": "Rich-Mond", "Salary": "65000.00"},
         {"Name": "David", "Age": "27", "Address": "Texas", "Salary": "85000.00"},
         {"Name": "Kim", "Age": "22", "Address": "South-Hall", "Salary": "45000.00"},
         {"Name": "James", "Age": "24", "Address": "Houston", "Salary": "10000.00"}, ])

 #获取集合中的值
 for row in mongoCollection.find():
  print("-" * 50) # 输出50个-,作为分界线
  print("%-10s %s" % ("_id", row['_id'])) # 字段名固定10位宽度,并且左对齐
  print("%-10s %s" % ("name", row['Name']))
  print("%-10s %s" % ("age", row['Age']))
  print("%-10s %s" % ("address", row['Address']))
  print("%-10s %s" % ("salary", row['Salary']))

 print('\n\n\n')
 # 使id自增
 mongoCollection.remove()
 # 创建计数表
 mongoDatabase.counters.save({"_id": "people_id", "sequence_value": 0})
 # 创建存储过程
 mongoDatabase.system_js.getSequenceValue = '''function getSequenceValue(sequenceName){
   var sequenceDocument = db.counters.findAndModify({
    query: {_id: sequenceName},
    update: {$inc:{sequence_value: 1}},
    new:true
   });
   return sequenceDocument.sequence_value;
  }'''
 mongoCollection.insert_many(
   [{"_id": mongoDatabase.eval("getSequenceValue('people_id')"), "Name": "Paul", "Age": "32",
    "Address": "California", "Salary": "20000.00"},
    {"_id": mongoDatabase.eval("getSequenceValue('people_id')"), "Name": "Allen", "Age": "25",
    "Address": "Texas", "Salary": "15000.00"},
    {"_id": mongoDatabase.eval("getSequenceValue('people_id')"), "Name": "Teddy", "Age": "23",
    "Address": "Norway", "Salary": "20000.00"},
    {"_id": mongoDatabase.eval("getSequenceValue('people_id')"), "Name": "Mark", "Age": "25",
    "Address": "Rich-Mond", "Salary": "65000.00"},
    {"_id": mongoDatabase.eval("getSequenceValue('people_id')"), "Name": "David", "Age": "27",
    "Address": "Texas", "Salary": "85000.00"},
    {"_id": mongoDatabase.eval("getSequenceValue('people_id')"), "Name": "Kim", "Age": "22",
    "Address": "South-Hall", "Salary": "45000.00"},
    {"_id": mongoDatabase.eval("getSequenceValue('people_id')"), "Name": "James", "Age": "24",
    "Address": "Houston", "Salary": "10000.00"}, ])

 for row in mongoCollection.find():
  print("-" * 50) # 输出50个-,作为分界线
  print("%-10s %s" % ("_id", int(row['_id']))) # 字段名固定10位宽度,并且左对齐
  print("%-10s %s" % ("name", row['Name']))
  print("%-10s %s" % ("age", row['Age']))
  print("%-10s %s" % ("address", row['Address']))
  print("%-10s %s" % ("salary", row['Salary']))
except pymongo.errors.PyMongoError as e:
 print("mongo Error:", e)
 traceback.print_exc()

5.连接Redis

5.1使用redis

# coding=utf-8
# Created by xiaosanyu at 16/5/31

# https://pypi.python.org/pypi/redis/2.10.5
# http://redis-py.readthedocs.io/en/latest/#
import redis

r = redis.Redis(host='localhost', port=6379, db=0, password="12345")
print("connect", r.ping())

# 看信息
info = r.info()
# or 查看部分信息
# info = r.info("Server")

# 输出信息
items = info.items()
for i, (key, value) in enumerate(items):
 print("item %s----%s:%s" % (i, key, value))

# 删除键和对应的值
r.delete("company")

# 可以一次性push一条或多条数据
r.rpush("company", {"id": 1, "Name": "Paul", "Age": "32", "Address": "California", "Salary": "20000.00"},
  {"id": 2, "Name": "Allen", "Age": "25", "Address": "Texas", "Salary": "15000.00"},
  {"id": 3, "Name": "Teddy", "Age": "23", "Address": "Norway", "Salary": "20000.00"})
r.rpush("company", {"id": 4, "Name": "Mark", "Age": "25", "Address": "Rich-Mond", "Salary": "65000.00"})
r.rpush("company", {"id": 5, "Name": "David", "Age": "27", "Address": "Texas", "Salary": "85000.00"})
r.rpush("company", {"id": 6, "Name": "Kim", "Age": "22", "Address": "South-Hall", "Salary": "45000.00"})
r.rpush("company", {"id": 7, "Name": "James", "Age": "24", "Address": "Houston", "Salary": "10000.00"})

# eval用来将dict格式的字符串转换成dict
for row in map(lambda x: eval(x), r.lrange("company", 0, r.llen("company"))):
 print("-" * 50) # 输出50个-,作为分界线
 print("%-10s %s" % ("_id", row['id'])) # 字段名固定10位宽度,并且左对齐
 print("%-10s %s" % ("name", row['Name']))
 print("%-10s %s" % ("age", row['Age']))
 print("%-10s %s" % ("address", row['Address']))
 print("%-10s %s" % ("salary", row['Salary']))

# 关闭当前连接
# r.shutdown() #这个是关闭redis服务端

5.2使用pyredis

# Created by xiaosanyu at 16/5/30

# http://pyredis.readthedocs.io/en/latest/
import pyredis

r = pyredis.Client(host='localhost', port=6379, database=0, password="12345")
print("connect", r.ping().decode("utf-8"))

# 看信息

# info = r.execute("info").decode()
# or 查看部分信息
info = r.execute("info", "Server").decode()

# 输出信息
print(info)

# 删除键和对应的值
r.delete("company")

# 可以一次性push一条或多条数据
r.rpush("company", '''{"id": 1, "Name": "Paul", "Age": "32", "Address": "California", "Salary": "20000.00"}''',
  '''{"id": 2, "Name": "Allen", "Age": "25", "Address": "Texas", "Salary": "15000.00"}''',
  '''{"id": 3, "Name": "Teddy", "Age": "23", "Address": "Norway", "Salary": "20000.00"}''')
r.rpush("company", '''{"id": 4, "Name": "Mark", "Age": "25", "Address": "Rich-Mond", "Salary": "65000.00"}''')
r.rpush("company", '''{"id": 5, "Name": "David", "Age": "27", "Address": "Texas", "Salary": "85000.00"}''')
r.rpush("company", '''{"id": 6, "Name": "Kim", "Age": "22", "Address": "South-Hall", "Salary": "45000.00"}''')
r.rpush("company", '''{"id": 7, "Name": "James", "Age": "24", "Address": "Houston", "Salary": "10000.00"}''')

# eval用来将dict格式的字符串转换成dict
for row in map(lambda x: eval(x), r.lrange("company", 0, r.llen("company"))):
 print("-" * 50) # 输出50个-,作为分界线
 print("%-10s %s" % ("_id", row['id'])) # 字段名固定10位宽度,并且左对齐
 print("%-10s %s" % ("name", row['Name']))
 print("%-10s %s" % ("age", row['Age']))
 print("%-10s %s" % ("address", row['Address']))
 print("%-10s %s" % ("salary", row['Salary']))

# 关闭当前连接
r.close()

代码下载:python_connect_database

以上这篇python 连接各类主流数据库的实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python绘图库Matplotlib的安装
Jul 03 Python
对于Python的框架中一些会话程序的管理
Apr 20 Python
Python构建网页爬虫原理分析
Dec 19 Python
python中matplotlib条件背景颜色的实现
Sep 02 Python
Pycharm最新激活码2019(推荐)
Dec 31 Python
适合Python初学者的一些编程技巧
Feb 12 Python
pyspark 随机森林的实现
Apr 24 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
May 22 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
Jun 05 Python
Python虚拟环境virtualenv创建及使用过程图解
Dec 08 Python
Python 随机按键模拟2小时
Dec 30 Python
基于Python-turtle库绘制路飞的草帽骷髅旗、美国队长的盾牌、高达的源码
Feb 18 Python
python操作oracle的完整教程分享
Jan 30 #Python
Python使用wxPython实现计算器
Jan 30 #Python
python链接oracle数据库以及数据库的增删改查实例
Jan 30 #Python
python实现简易版计算器
Jun 22 #Python
python列表的增删改查实例代码
Jan 30 #Python
Python+tkinter使用40行代码实现计算器功能
Jan 30 #Python
Python Tkinter实现简易计算器功能
Jan 30 #Python
You might like
使用PHP获取网络文件的实现代码
2010/01/01 PHP
理解和运用PHP中的多态性[译]
2011/08/02 PHP
php判断终端是手机还是电脑访问网站的思路及代码
2013/04/24 PHP
PHP加密解密字符串汇总
2015/04/26 PHP
HTML-CSS群中单选引发的“事件”
2007/03/05 Javascript
ie7+背景透明文字不透明超级简单的实现方法
2014/01/17 Javascript
js加减乘除丢失精度问题解决方法
2014/05/16 Javascript
用js的document.write输出的广告无阻塞加载的方法
2014/06/05 Javascript
javascript中DOM复选框选择用法实例
2015/05/14 Javascript
JavaScript获得指定对象大小的方法
2015/07/01 Javascript
JavaScript 七大技巧(一)
2015/12/13 Javascript
JavaScript中的ParseInt("08")和“09”返回0的原因分析及解决办法
2016/05/19 Javascript
js编写一个简单的产品放大效果代码
2016/06/27 Javascript
js css3实现图片拖拽效果
2017/03/04 Javascript
JavaWeb表单及时验证功能在输入后立即验证(含用户类型,性别,爱好...的验证)
2017/06/09 Javascript
详解React 的几种条件渲染以及选择
2018/10/23 Javascript
jQuery实现的鼠标拖动浮层功能示例【拖动div等任何标签】
2018/12/29 jQuery
express + jwt + postMan验证实现持久化登录
2019/06/05 Javascript
vue cli3 调用百度翻译API翻译页面的实现示例
2019/09/13 Javascript
prettier自动格式化去换行的实现代码
2020/08/25 Javascript
从零学Python之hello world
2014/05/21 Python
python3简单实现微信爬虫
2015/04/09 Python
Python定时执行之Timer用法示例
2015/05/27 Python
python中的句柄操作的方法示例
2019/06/20 Python
python取余运算符知识点详解
2019/06/27 Python
Python3搭建http服务器的实现代码
2020/02/11 Python
python实现音乐播放器 python实现花框音乐盒子
2020/02/25 Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
2020/02/26 Python
澳大利亚领先的亚麻品牌:Bed Threads
2019/12/16 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2014/07/27 面试题
90后毕业生的求职信范文
2013/09/21 职场文书
个人求职简历的自我评价
2013/10/19 职场文书
单位办理社保介绍信
2014/01/10 职场文书
2015年暑期实践报告范文
2015/07/13 职场文书
2016教师党员学习心得体会
2016/01/21 职场文书
使用JS前端技术实现静态图片局部流动效果
2022/08/05 Javascript