python 简单操作mysql_Python和MySQL数据库简单操作

数据库分类

SQL(关系型数据库) MySQL

SQL Server

DB2

NoSQL

这个NoSQL表示是Not Only SQL,而不是No SQL。SQL的本质是保证事物的完整性(高并发的情况下)遵循ACID?,无法水平扩展。因而NoSQL基于CAP,在牺牲事物(有可能丢失)的情况下实行水平扩展, MongoDB

Neo4j

HBase

MySQL的简单操作

使用Navicat来创建表

使用 Python 来操作SQL 首先使用开发包,主要有三种 mysql-connector

、 MySQLdb

、 SQLAlchemy

。其中相比 mysql-connector

, MySQLdb

用的比较多。而第一个则是官方给出的方案。

安装方案如下: pip3 install mysql-connector #安装mysql-connector

pip3 install PyMySQL #安装MySQLdb 3.x以上的替代方案

mysql-connector实操

创建链接 from mysql import connector

conn = connector.connect(host = 'localhost', port = 3306 ,

user = 'root', password = 'laoduan2008',

charset = 'utf8')

conn.autocommit = True #为了不重复输入commit

ERROR Record: mysql.connector.errors.NotSupportedError: Authentication plugin 'caching_sha2_password' is not supported

MySQL8在这里和低版本不兼容

,你可以重新安装MySQL(或者用Reconfigure选项),把认证的选项设置为“Use Legacy Authentication Method”, 或者你如果不是必须要用 MySQL 8,可以降级到低版本。

创建游标 cursor = conn.cursor()

sqltext = 'insert into users(name, address, email) values ("deamov","beijing","abc@blabla")'

#设置语句

text_temple = 'insert into users(name, address, email) values (%s ,%s ,%s)'

cursor.executemany(sql_template,userinfo)

#如何执行多条语句

执行SQL cursor.execute(sqltext)

#执行语句

关闭连接 cursor.close()

conn.close()

PyMySQL

创建链接 import pymysql

conn = pymysql.connect()

conn.autocommit(True)

ERROR Record pymysql.err.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: NO)")

有可能是root账号的密码这些不能登陆,通过root账号登陆后,分配一个账号类似 CREATE USER 'deamov'@'localhost IDENTIFIED WITH mysql_native_password BY 'password';

。之后, use your_database_name

选择了你要用的 数据库 后,将权限给你的新的账户 grant all privileges on *.* to deamov@localhost

创建游标 cursor = conn.cursor()

#mysql-connector用的是弱引用

#PyMySQL的游标可以在函数里用

执行SQL sqltext = 'select * from users'

cursor.excute(sqltext)

for row in cursor:

print row

#读取所有的

for row in cursor.fetchmany(2):

print row

#读取两条

from faker import Factory

userfaker = Factory.create()

userinfo = [(userfaker.name(),userfaker.address(),userfaker.email()) for i in range(10)]

text_temple = 'insert into users(name, address, email) values (%s ,%s ,%s)

cursor.executemany(sql_template,userinfo)

#批量插入

关闭链接 cursor.close()

conn.close()

SQLAlchemy

The Python SQL Toolkit and Object Relational Mapper。

ORM(O是面向对象,R是面向关系,M是Map):

面向对象和面向关系的模拟关联。

表映射到类 行映射到对象

列映射到属性

优点如下

隐藏数据库实现

良好的数据库操作接口,简单,学习成本低。

动态数据表映射

开发步骤

创建链接 from sqlalchemy import create_engine

from sqlalchemy.ext.declarative import declarative_base

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

engine = create_engine('mysql+mysqldb://deamov:password@127.0.0.1:3306/MySQLTest?charset=utf8',echo=True)

#echo这个参数是把sql的语句打印出来

创建映射(表的设计) Base = declarative_base()

class User(Base):

__tablename__ = 'users'

id = Column(Integer, primary_key = Ture)

name = Column(String(40))

orders = relationship('Order')

class Product(Base):

__tablename__ = 'products'

id = Column(Integer, primary_key = Ture)

name = Column(String(40))

orders = relationship('Order')

#这个orders不是ddl语言,而是针对面向对象编程而言的

class Order(Base):

__tablename__ = 'orders'

id = Column(Integer,primary_key = True)

otime = Column(DateTime)

uid = Column(Integer, ForeignKey('users.id'))

pid = Column(Integer, ForeignKey('products.id'))

#定义外键

初始化映射实例 Base.metadata.create_all(engine)

创建会话 Session = sessionmaker(engine)

session = Session()

持久化对象实例 DeamoV = User(name = 'DeamoV')

session.add(DeamoV)

p1 = Product(name = 'p1')

session.add(p1)

session.commit()

'''

------

'''

#DeamoV = session.query(User).filter(User.name=='DeamoV')

#返回的是一个集合,集合里是选择的实例类

#p1 = session.query(Product).filter(Product.name=='p1')

#这里的Product和User都是类的名字

o1 = Order(uid=p1.id ,pid=p1.id)

#添加了一个关系

session.add(o1)

orders=DeamoV.orders

#这个时候获取这个关系,目前只有一个关系

for order in orders:

print(order.id)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值