最近需要做一个东西把接口获取到的数据存到云数据库上,尝试了一下云数据库的使用,将具体操作记录一下。
1. 购买一个云数据库,因为是测试就买了一个按需付费的。
2. 初始化,设置用户名、密码。
3. 登录 phpMyAdmin,创建数据库。
4.开启外网IP
购买云数据库后,初始化设置用户密码,然后登录 phpMyAdmin,这是一个在线的Mysql网页数据库管理工具,可以进行创建数据库、表、执行sql语句登操作,这里创建一个数据库demo01。具体操作:https://cloud.tencent.com/document/product/236/36444
然后登录Mysql控制台,在实例列表中,单击实例名或“操作”列的【管理】,进入实例详情页面。找到【外网地址】,单击【开启】。开启成功后,即可在基本信息中查看到外网地址。
我们需要的是外网地址和端口号,在python程序中通过这两个在加上数据库名和密码就可以连接到云数据库。
数据库连接测试程序
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File : dbtest.py
# @Author: Small-orange
# @Date : 2020-7-21
# @Desc : 每3秒向数据库插入一条数据
from sqlalchemy import create_engine,MetaData,Table,Column,Integer,String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
import pymysql
import random
import time
#数据库连接函数并创建表格
def dbConnection():
engine = create_engine('mysql+pymysql://数据库用户名:数据库的密码@外网地址:外网端口/数据库名)
# 连接到数据库
conn = engine.connect()
# MetaData类主要用于保存表结构,连接字符串等数据,是一个多表共享的对象
metadata = MetaData(engine) # 绑定一个数据源的metadata
# 定义表结构,包括表名,上面绑定的数据源metadata和列定义
student = Table('test_table', metadata,
Column('id', Integer, primary_key=True),
Column('name', String(20)),
Column('score', Integer)
)
metadata.create_all(engine) # 创建表,安全操作,会先判断表是否存在
# 向表中添加数据
# 对数据库的操作需要通过session来完成
DBsession = sessionmaker(bind=engine)
# sessionmake方法创建一个Session工厂,然后在调用工厂的方法来实例化一个Session对象。
session = DBsession()
return session
def addData():
session = dbConnection()
Base = declarative_base()
# 创建数据表对应的类
class Student(Base):
__tablename__ = 'test_table'
id = Column(Integer, primary_key=True)
name = Column(String(20))
score = Column(Integer)
print('--开始添加数据--')
id = 12
while True:
print('添加第{}条数据'.format(id))
name = 'testdata-{}'.format(id)
score = random.randint(50,100)
stu = Student(id=id, name=name, score=score)
session.add(stu)
session.commit() # 提交事务
session.close()
id = id + 1
time.sleep(3)
#测试addFata()函数
addData()
结果:
程序运行后,数据被存入到云数据库上面了。