13

江苏津铭创艺家居有限公司

水切割加工|激光切割加工|金属切割加工、定制

盐城水切割||盐城激光切割-盐城金属切割公司


江苏省盐城市津铭创艺家居有限公司是一家集销售不锈钢板、冷热轧板等钢材及利用精密钣金切割技术对五金装饰工艺品等进行生




产加工的大型综合性钢材店。我们秉承“质量第一、顾客第一”的经营宗旨,发扬“研于本业,精益求精”的工作精神,致力于对五金




加工的品质和功能的不断完善。现拥有先进的意大利进口激光切割机(4*2米工作台面)、激光切割机的加工精度单位±0.01mm、碳钢最厚

  • 暂无新闻
  • 联系人:葛益顺
  • 电话:0515-89113222
  • 手机:18961943366
新闻中心
产品分类
联系方式
  • 联系人:葛益顺
  • 电话:0515-89117222
  • 手机:18961948666
站内搜索
友情链接
  • 暂无链接
正文
太全了!用Python操作MySQL的使用教程集锦!
发布时间:2022-08-25     

  Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口。香港六合书。Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库:

  不同的数据库你需要下载不同的DB API模块,例如你需要访问Oracle数据库和Mysql数据,你需要下载Oracle和MySQL数据库模块。

  DB-API 是一个规范. 它定义了一系列必须的对象和数据库存取方式, 以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口 。

  Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同的方式操作各数据库。

  # execute函数接受一个元组/列表作为SQL参数,元素个数只能有1个

  这样,SQL操作就更安全了。如果需要更详细的文档参考PyMySQL文档吧。不过好像这些SQL数据库的实现还不太一样,PyMySQL的参数占位符使用%s这样的C格式化符,而Python自带的sqlite3模块的占位符好像是问号(?)。因此在使用其他数据库的时候还是仔细阅读文档吧。Welcome to PyMySQL’s documentation

  上文中的方式存在一个问题,单线程情况下可以满足,程序需要频繁的创建释放连接来完成对数据库的操作,那么,我们的程序/脚本在多线程情况下会引发什么问题呢?此时,我们就需要使用数据库连接池来解决这个问题!

  # 如果为False时, conn.close 实际上被忽略,供下次使用,再线程关闭时,才会自动关闭链接。如果为True时, conn.close则关闭链接,那么再次调用pool.connection时就会报错,因为已经真的关闭了连接(pool.steady_connection可以获取一个新的链接)

  threadlocal=None,# 本线程独享值得对象,用于保存链接对象,如果链接对象被重置

  mincached=2,# 初始化时,链接池中至少创建的空闲的链接,0表示不创建

  # 链接池中最多共享的链接数量,0和None表示全部共享。PS: 无用,因为pymysql和MySQLdb等模块的 threadsafety都为1,所有值无论设置为多少,_maxcached永远为0,所以永远是所有链接都共享。

  blocking=True,# 连接池中如果没有可用连接后,是否阻塞等待。True,等待;False,不等待然后报错

  # 检测当前正在运行连接数的是否小于最大链接数,如果不小于则:等待或报raise TooManyConnections异常

  ⚠️ 由于pymysql、MySQLdb等threadsafety值为1,所以该模式连接池中的线程会被所有线程共享,因此是线程安全的。如果没有连接池,使用pymysql来连接数据库时,单线程应用完全没有问题,但如果涉及到多线程应用那么就需要加锁,一旦加锁那么连接势必就会排队等待,当请求比较多时,性能就会降低了。

  mincached=2,# 初始化时,链接池中至少创建的空闲的链接,0表示不创建

  blocking=True,# 连接池中如果没有可用连接后,是否阻塞等待。True,等待;False,不等待然后报错