1.sqlite3
import sqlite3
con=sqlite3.connect("g:\\mytest1.db")
cur=con.cursor()
cur.execute('create table test (?? TEXT)')
con.commit()
cur.close()
con.close()
Run Code Online (Sandbox Code Playgroud)
我成功创建了一个测试表mytest1.db和一个汉字名称“ ??” 作为领域。
2.在mysql命令控制台中。
C:\Users\root>mysql -uroot -p
Welcome to the MySQL monitor. Commands end with ; or \g.
mysql> create database mytest2;
Query OK, 1 row affected (0.00 sec)
mysql> use mytest2;
Database changed
mysql> set names "gb2312";
Query OK, 0 rows affected (0.00 sec)
mysql> create table stock(?? TEXT) ;
Query OK, 0 rows affected (0.07 sec)
Run Code Online (Sandbox Code Playgroud)
可以得出结论:汉字可以在mysql控制台中使用。
3.pymysql的
代码31
import pymysql
con = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='******')
cur=con.cursor()
cur.execute("create database if not exists mytest31")
cur.execute("use mytest31")
cur.execute('set names "gb2312" ')
cur.execute('create table stock(?? TEXT) ')
con.commit()
Run Code Online (Sandbox Code Playgroud)
代码32
import pymysql
con = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='******')
cur=con.cursor()
cur.execute("create database if not exists mytest32")
cur.execute("use mytest32")
cur.execute('set names "gb2312" ')
cur.execute('create table stock(?? TEXT) ')
con.commit()
Run Code Online (Sandbox Code Playgroud)
发生同样的问题
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 21-22: o rdinal not in range(256)
Run Code Online (Sandbox Code Playgroud)
4.mysql-python-连接
代码41
import mysql.connector
config={'host':'127.0.0.1',
'user':'root',
'password':'123456',
'port':3306 ,
'charset':'utf8'
}
con=mysql.connector.connect(**config)
cur=con.cursor()
cur.execute("create database if not exists mytest41")
cur.execute("use mytest41")
cur.execute('set names "gb2312" ')
str='create table stock(?? TEXT)'
cur.execute(str)
Run Code Online (Sandbox Code Playgroud)
代码42
import mysql.connector
config={'host':'127.0.0.1',
'user':'root',
'password':'******',
'port':3306 ,
'charset':'utf8'
}
con=mysql.connector.connect(**config)
cur=con.cursor()
cur.execute("create database if not exists mytest42")
cur.execute("use mytest42")
cur.execute('set names "gb2312" ')
str='create table stock(??.encode("utf-8") TEXT)'
cur.execute(str)
Run Code Online (Sandbox Code Playgroud)
相同的错误,例如在pymysql中。
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 22-23: o
rdinal not in range(256)
Run Code Online (Sandbox Code Playgroud)
python mysql模块中肯定不能将中文字符用作字段名称是一个错误。
1.中文字符可以在python sqlite3模块中用作字段名称。
2.只有在“设置名称为“ gb2312””的情况下,汉字才能在mysql控制台中用作字段名称。
小智 5
pymysql.connect() 接受一个字符集参数。我已经测试过charset="utf8",charset="gb2312"并且都可以使用(Python 3,PyMySQL 0.6.2)。"SET NAMES"在这种情况下,您不需要使用查询。
import pymysql
con = pymysql.connect(host='127.0.0.1', port=3306,
user='root', passwd='******',
charset="utf8")
cur = con.cursor()
cur.execute("create database if not exists mytest31")
cur.execute("use mytest31")
cur.execute("create table stock(?? TEXT)")
con.commit()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
929 次 |
| 最近记录: |