centOS7 下安装测试mariadb,SQLAlchemy第一次使用

mariadb
安装 : yum -y install mariadb
测试:
启动服务
systemctl start mariadb.service
systemctl enable mariadb.service
默认密码为空
mysql -u root -p

SQLAlchemy
参考文档: http://docs.sqlalchemy.org/en/rel_1_0/orm/tutorial.html
ORM(Object Relational Map)的基本概念。 一个Object对应于数据库中某个表中的一行,SQLAlchemy会帮你做Object和DB表格行之间的同步工作。
按官方文档操作:
1 版本检查
2 链接
import sqlalchemy
from sqlalchemy import create_engine
engine=create_engine(“mysql://root:@localhost/test”,encoding=”utf-8”,echo=True)

发现链接不上
怀疑连接字符串出错了,其实没有,就是mysql开头。
原因是python库中没有MySQLdb库。想起Windows下连接mysql时需要安装一个.exe的MySQLdb库,原来是这样,linux下没有安装,所以连接不成功。
python连接mysql的驱动(API)官网 https://pypi.python.org/pypi/MySQL-python/1.2.5
要想使python可以操作mysql 就需要MySQL-python驱动,它是python 操作mysql必不可少的模块。

1 要想使python可以操作mysql 就需要MySQL-python驱动,它是python 操作mysql必不可少的模块。

yum install gcc python-devel mysql-devel -y

2 下载和解压缩

wget "https://pypi.python.org/packages/source/M/MySQL-python/MySQL-python-1.2.5.zip#md5=654f75b302db6ed8dc5a898c625e030c"
unzip MySQL-python-1.2.5.zip

3 进入解压后的文件目录,安装

cd MySQL-python-1.2.5
python setup.py install

记得关闭防火墙

systemctl start firewalld.service#启动firewall
systemctl stop firewalld.service#停止firewall
systemctl disable firewalld.service#禁止firewall开机启动

从其他Host连接mariadb

SQL Error (1130): Host ‘192.168.XX.XX’ is not allowed to connect to this MySQL server
说明所连接的用户帐号没有远程连接的权限,只能在本机(localhost)登录。
需更改 mysql 数据库里的 user表里的 host项把localhost改称%
首先按下面的步骤登录Mysql服务器
登录mysql需要切换到dos下的mysql的bin目录,进行如下操作:
mysql>use mysql;
mysql>update user set host = ‘%’ where user =’root’;
MariaDB [mysql]> update user set host = ‘%’ where host = ‘localhost’;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0 Changed: 0 Warnings: 0
mysql>flush privileges;
mysql> select host, user from user;
mysql>quit
OK。远程连接成功!

创建表格

#!usr/bing/python
# coding=utf-8
# 使用sqlalchemy链接mariadb创建表格
__author__ = 'ning'
from sqlalchemy import create_engine
from sqlalchemy import String, Integer, Column
from sqlalchemy.ext.declarative import declarative_base

engine = create_engine("mysql://root:[email protected]/test", encoding="utf-8", echo=True)

Base = declarative_base()


class User(Base):
    __tablename__ = "users"
    id = Column(Integer, primary_key=True)
    name = Column(String(50))
    fullname = Column(String(50))
    password = Column(String(50))

    def __repr__(self):
        return "<User(id=%s,name=%s,fullname=%s,password=%s)>" %\
               (self.id, self.name, self.fullname, self.password)

Base.metadata.create_all(engine)

你可能感兴趣的:(mysql,DB,centos,maria)