首页 / PYTHON / Python 连接数据库
Python 连接数据库
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python 连接数据库,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3059字,纯文字阅读大概需要5分钟。
内容图文
sqlite3
import sqlite3
# 创建数据库连接
conn = sqlite3.connect("wucai.db")
# 获取游标
cur = conn.cursor()
# 创建数据表
cur.execute("CREATE TABLE IF NOT EXISTS heros (id int primary key, name text, hp_max real, mp_max real, role_main text)")
# 插入英雄数据
cur.executemany('insert into heros values(?, ?, ?, ?, ?)',
((10000, '夏侯惇', 7350, 1746, '坦克'),
(10001, '钟无艳', 7000, 1760, '战士'),
(10002, '张飞', 8341, 100, '坦克'),
(10003, '牛魔', 8476, 1926, '坦克'),
(10004, '吕布', 7344, 0, '战士')))
cur.execute("SELECT id, name, hp_max, mp_max, role_main FROM heros")
result = cur.fetchall()
print(result)
# 提交事务
conn.commit()
# 关闭游标
cur.close()
# 关闭数据库连接
conn.close()
'''
SELECT
SUM((CASE WHEN Age IS NULL THEN 1 ELSE 0 END)) AS age_null_num,
SUM((CASE WHEN Cabin IS NULL THEN 1 ELSE 0 END)) AS cabin_null_num
FROM titanic_train
'''
Pymysql
import pymysql
import json
# 打开数据库连接
db = pymysql.connect("localhost","root","123456","his" )
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL 插入语句
sql = """SELECT * FROM doctor limit 10"""
try:
# 执行sql语句
rnum=cursor.execute(sql)
results = cursor.fetchall()
# 提交到数据库执行
db.commit()
except:
# 如果发生错误则回滚
db.rollback()
# 关闭数据库连接
db.close()
print("共有",rnum,"行",sep='')
for res in results:
print(json.dumps(res,ensure_ascii=False))
SQLAlchemy
SQLAlchemy
是一个ORM框架。
# 导入:
from sqlalchemy import Column, String, create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Integer
# 创建对象的基类:
Base = declarative_base()
# 定义User对象:
class HEROS(Base):
# 表的名字:
__tablename__ = 'heros'
# 表的结构:
id = Column(Integer, primary_key=True)
name = Column(String(20))
hp_max=Column(Integer())
mp_max=Column(Integer())
role_main=Column(String(255))
# 初始化数据库连接:
engine = create_engine('sqlite:///wucai.db')
# 创建DBSession类型:
DBSession = sessionmaker(bind=engine)
# 创建session对象:
session = DBSession()
#one()返回一行
doctors = session.query(HEROS).filter(HEROS.id>=10000).all()
''' query:
SELECT heros.id AS heros_id, heros.name AS heros_name, heros.hp_max AS heros_hp_max, heros.mp_max AS heros_mp_max, heros.role_main AS heros_role_main
FROM heros
WHERE heros.name >= ?
'''
print("共有",len(doctors),"行",sep='')
for doctor in doctors:
print(doctor.__dict__)
# 提交即保存到数据库:
session.commit()
# 关闭session:
session.close()
可见,ORM就是把数据库表的行与相应的对象建立关联,互相转换。
由于关系数据库的多个表还可以用外键实现一对多、多对多等关联,相应地,ORM框架也可以提供两个对象之间的一对多、多对多等功能。
例如,如果一个User拥有多个Book,就可以定义一对多关系如下:
class User(Base):
__tablename__ = 'user'
id = Column(String(20), primary_key=True)
name = Column(String(20))
# 一对多:
books = relationship('Book')
class Book(Base):
__tablename__ = 'book'
id = Column(String(20), primary_key=True)
name = Column(String(20))
# “多”的一方的book表是通过外键关联到user表的:
user_id = Column(String(20), ForeignKey('user.id'))
当我们查询一个User对象时,该对象的books属性将返回一个包含若干个Book对象的list。
内容总结
以上是互联网集市为您收集整理的Python 连接数据库全部内容,希望文章能够帮你解决Python 连接数据库所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。